наследование и 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, время: 21:35. |