У меня возникли проблемы с пониманием, почему изменение свойства в экземпляре a
изменяет то же свойство в экземпляре b
.
var A = function (){
};
A.prototype.data = {
value : 0
};
var a = new A();
var b = new A();
console.log(a.data.value, b.data.value); // 0, 0
a.data.value = 5;
console.log(a.data.value, b.data.value); // 5, 5
Разве ключевое слово prototype не должно превращать переменную data
в переменную экземпляра?
Это, кажется, не тот случай в этом примере, который выполняется как ожидалось:
var B = function (){
this.data = {
value : 0
};
};
var i = new B();
var j = new B();
console.log(i.data.value, j.data.value); // 0, 0
i.data.value = 5;
console.log(i.data.value, j.data.value); // 5, 0
Я запутался, почему метод-прототип не работает. Может быть, мне не хватает некоторых концептуальных знаний.