静的言語の「静的フィールド」に似たものを作成しようとしています。基本的に:counterプロパティは、init関数が呼び出されるたびにインクリメントする必要がありますが、どのインスタンスでもインクリメントする必要があります。これは私がテストに使用しているサンプルコードです(http://jsfiddle.net/HK8BY/2/):
var Widget = {
counter: 0,
init: function () {
this.counter++;
console.log("init called: " + this.counter);
}
};
var t1 = Object.create(Widget);
var t2 = Object.create(Widget);
t1.init(); // should print: init called 1
t2.init(); // should print: init called 2
console.log(t1);
console.log(t2);
現在、console.logインスタンスを実行すると、 protoとinstanceの両方にcounterプロパティが含まれていることがわかります。このアプローチでは、プロトだけがそれを持っていると思いました。
では、プロトタイプでカウンターのみを持つように変更するにはどうすればよいですか?