наследование и prototype
Известно, что для наследования необходимо установить прототип:
function Animal() {} function Cat() {} Cat.prototype = new Animal(); Так вот вопрос, почему нельзя сделать так: function Animal() {} function Cat() {} Cat.prototype = Animal.prototype; // смотреть на эту строчку Если, можно укажите ссылки на раздел в спецификации, почему так. У меня только догадка, с установкой скрытого поля [[Prototype]] |
Цитата:
|
Цитата:
Animal.prototype!=(new Animal()) |
Главным образом потому, что это будет уже не наследование.
(function() { var A = function() {}; var B = function() {}; B.prototype = A.prototype; B.prototype.extended = 42; alert(new A().extended); })(); По сути, это добавление альтернативного конструктора, если проводить аналогию с классическим ООП. |
Часовой пояс GMT +3, время: 03:40. |