1.2 KiB
1.2 KiB
Нет, не распознает, выведет false
.
Свойство constructor
содержится в prototype
функции по умолчанию, интерпретатор не поддерживает его корректность. Посмотрим, чему оно равно и откуда оно будет взято в данном случае.
Порядок поиска свойства rabbit.constructor
, по цепочке прототипов:
rabbit
-- это пустой объект, в нём нет.Rabbit.prototype
-- в него при помощиObject.create
записан пустой объект, наследующий отAnimal.prototype
. Поэтомуconstructor'а
в нём также нет.Animal.prototype
-- у функцииAnimal
свойствоprototype
никто не менял. Поэтому оно содержитAnimal.prototype.constructor == Animal
.
function Animal() {}
function Rabbit() {}
Rabbit.prototype = Object.create(Animal.prototype);
var rabbit = new Rabbit();
*!*
alert( rabbit.constructor == Rabbit ); // false
alert( rabbit.constructor == Animal ); // true
*/!*