Я думаю, что самое важное различие заключается в том, что метод isPrototypeOf позволяет вам проверить, наследуется ли объект напрямую от другого объекта.Рассмотрим следующее:
var t = new Object();
var f = new Object();
var c = Object.create(t);
c instanceof f.constructor; // true
c instanceof t.constructor; // true
f.isPrototypeOf(c); // false
t.isPrototypeOf(c); // true
Как видите, конструктор - это только функция, которая создала экземпляр объекта.Не спецификатор реализации.Поэтому, если t.y = function(){ return true; }
и f.y = function(){ return false; }
и мне нужно проверить, что c
вернет соответствующую реализацию через цепочку прототипов, instanceof
не очень поможет.