en.javascript.info/1-js/9-object-inheritance/15-class-inheritance/6-constructor-inherited/solution.md
Ilya Kantor d4c714cbe1 work
2016-08-05 16:53:08 +03:00

1.2 KiB
Raw Blame History

Нет, не распознает, выведет false.

Свойство constructor содержится в prototype функции по умолчанию, интерпретатор не поддерживает его корректность. Посмотрим, чему оно равно и откуда оно будет взято в данном случае.

Порядок поиска свойства rabbit.constructor, по цепочке прототипов:

  1. rabbit -- это пустой объект, в нём нет.
  2. Rabbit.prototype -- в него при помощи Object.create записан пустой объект, наследующий от Animal.prototype. Поэтому constructor'а в нём также нет.
  3. 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
*/!*