function myclass(){
}
myclass.prototype = {
stuff: {},
getStuff: function(){
return Object.keys(this.stuff).length;
}
};
var m1 = new myclass();
m1.stuff[5] = 'test';
m1.stuff[6] = 'test';
var m2 = new myclass();
m2.stuff[12] = 'test';
m2.stuff[14] = 'test';
alert(m2.getStuff()); // 4 instead of 2 ?!
Может ли кто-нибудь объяснить причину, почему предупреждение печатает 4?Свойство, разделяемое между классами в javascript
Если я создал новый экземпляр моей функции, свойство stuff должно быть пустым.
Вы, вероятно, хотите, чтобы объявить его в конструкторе, как 'this.stuff = {}' – elclanrs
Прототип ш ared, есть только один экземпляр материала, и при его изменении для всех экземпляров. Подробно объясняется здесь: http://stackoverflow.com/a/16063711/1641941 – HMR