Страницы

Поиск по вопросам

вторник, 23 октября 2018 г.

Для чего в наследовании надо переопределять constructor

Наследование в javascript реализуется так
Child.prototype = Object.create(Parent.prototype) Child.prototype.constructor = Child
Вопрос в следующем: зачем нужна 2-ая строка?


Ответ

Дело в том, что когда создается функция, интерпретаторы javascript автоматически назначают ей свойство prototype:
function Foo() { // ... } Foo.prototype = { constructor: Foo }; // Происходит неявно и автоматически
Так исторически сложилось. А раз такое свойство есть - то есть и библиотеки которые на него завязываются!
Поэтому при переопределении свойства prototype нужно восстановить правильное значение constructor.

Комментариев нет:

Отправить комментарий