Путаница относительно прототипа в объекте javascript - PullRequest
1 голос
/ 14 июля 2020

Из того, что я прочитал , в 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, который изменяется? Что не так с моим пониманием?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...