プライベートプロパティを使用したオブジェクト作成パターンを検討する場合、1つの方法は次のとおりです。
function MyStack (){
var list = [],
index = 0;
this.push = function(val){
return list[index++] = val;
};
this.pop = function(){// ...}
}
var stack1 = new MyStack(); stack1.push(5);
var stack2 = new MyStack(); stack2.push(11);
これに関する問題:Stackのすべてのインスタンスには、メソッド「push」および「pop」の独自のコピーがあります。
コンストラクターメソッドを実装する別の方法は次のとおりです。
function MyStack(){
this.list = [];
this.index = 0;
}
MyStack.prototype = {
insert: function(val){
return this.list[this.index++] = val;
},
pop:function(){//...}
}
ここでの問題:リストとインデックスのプライバシーが失われます。
インスタンス間でメソッドを再利用し、プロパティのプライバシーを保護する方法はありますか?
オブジェクトのどの状態でも動作しないメソッドに対してこれを使用できることは理解していますが、状態で動作するメソッドについて詳しく説明しています。