「カウンター」プロパティがすべての新しいインスタンスでリセットされるように見える理由を理解するのを手伝ってくれる人はいますか? インスタンス化されたすべてのオブジェクトで共有される「文字」プロパティのように機能することを期待していました。
静的にすることを意図していない限り、プロトタイプ プロパティをこのように使用してはならない理由について、いくつかのサンプル コードをまとめているときに、これに遭遇しました。
サンプルコード:
var Dog = function() {
this.initialize.apply(this, arguments);
};
Dog.prototype = {
counter : 2,
letters : [ 'a', 'b', 'c' ],
initialize : function(dogName) {
this.dogName = dogName;
},
add : function(amount) {
this.counter += amount;
},
arr : function(char) {
this.letters.push(char);
}
};
var fido = new Dog("fido");
fido.add(1);
fido.arr('d');
console.log(fido.counter); // 3, as expected
console.log(fido.letters.toString()); // ABCD, as expected
var maxx = new Dog("maxx");
maxx.add(1);
maxx.arr('e');
console.log(maxx.counter); // 3, Unexpected, Why isn't this 4?
console.log(maxx.letters.toString()); // ABCDE, as expected