Из того, что я прочитал , в JS прототип ссылается на объект, на который ссылаются его функции-конструкторы.
Итак, скажем,
function Dog(name){
this.name = name;
}
Dog.prototype.bark = function(){alert("Woof");}
Это означает, что теперь прототип Собаки имеет свойство bark
.
var dog = new Dog("Doggo");
dog.bark();
Работает нормально и предупреждает Woof
Однако, когда я добавляю,
function Cat(name){
this.name = name;
}
var cat = new Cat("Little kitten");
cat.bark(); //Nothing happens, why?
И прототипы Dog, и Cat указывают на один и тот же Object.prototype на данный момент (вроде того, как класс Object является суперклассом всех созданных классов в JAVA, я знаю, что прототипы и классы не одинаковы, но структура похожа ).
Итак, когда я изменяю прототип Dog, добавляя свойство bark
, оно также должно отражаться в Cat, потому что они указывают на тот же Object.prototype, который изменяется? Что не так с моим пониманием?