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