Почему эти 2 реализации ведут себя по-другому? Что именно их отличает, когда дело доходит до оценки их прототипов?
Создание объекта с указанным прототипом:
function Foo() {}
// creates an object with a specified prototype
var bar = Object.create(Foo);
console.log(Object.getPrototypeOf(bar)); // returns: function Foo(){}
console.log(Foo.isPrototypeOf(bar)); // returns: true
Создание объекта с помощью метода конструктора:
function Foo() {}
// creates an object with the constructor method
var bar = new Foo();
console.log(Object.getPrototypeOf(bar)); // returns: Foo {}
console.log(Foo.isPrototypeOf(bar)); // returns: false
Кроме того, почему вторая реализация возвращает как Foo {}
, так и false
?