Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   наследование и prototype (https://javascript.ru/forum/misc/7949-nasledovanie-i-prototype.html)

js_noob 28.02.2010 03:11

наследование и prototype
 
Известно, что для наследования необходимо установить прототип:
function Animal() {}

function Cat() {}
Cat.prototype = new Animal();


Так вот вопрос, почему нельзя сделать так:
function Animal() {}

function Cat() {}
Cat.prototype = Animal.prototype; // смотреть на эту строчку


Если, можно укажите ссылки на раздел в спецификации, почему так. У меня только догадка, с установкой скрытого поля [[Prototype]]

Octane 28.02.2010 03:14

Цитата:

Сообщение от js_noob
Cat.prototype = Animal.prototype;

Так Cat.prototype и Animal.prototype будут ссылаться на один и тот же объект.

Gvozd 28.02.2010 09:12

Цитата:

Сообщение от js_noob
Так вот вопрос, почему нельзя сделать так:

можно.но только учтите что
Animal.prototype!=(new Animal())

vk65535 01.03.2010 00:32

Главным образом потому, что это будет уже не наследование.
(function() {

var A = function() {};
var B = function() {};
B.prototype = A.prototype;
B.prototype.extended = 42;
alert(new A().extended);

})();


По сути, это добавление альтернативного конструктора, если проводить аналогию с классическим ООП.


Часовой пояс GMT +3, время: 03:40.