我希望能夠調用與私人數據一起工作的子功能。目前,我有這樣的:如何製作特權JS方法?
var myFunction4 = function() {
this.secret1 = 0;
this.secret2 = 0;
var that = this;
this.iterate1 = function(){
return that.secret1++;
}
this.iterate2 = function(){
return that.secret2++;
}
this.addSecrets = function(){
return that.secret1 + that.secret2;
}
return {
iterate1: this.iterate1,
iterate2: this.iterate2,
addSecrets: this.addSecrets,
}
};
關於這個壞事是調用的方法之一,我必須這樣做:
myFunction4().iterate1();
,其執行myFunction4()
每一次我想要訪問的方法。這不僅效率低下,而且每次都會重置secret1
,所以我無法迭代它。我試過使用new
操作符,但是這個操作符暴露了secret1
和secret2
,它破壞了嵌套函數的能力。
var myFunction3 = function() {
this.secret1 = 0;
this.secret2 = 0;
this.iterate1 = function(){
return this.secret1++;
}
this.iterate2 = function(){
return this.secret2++;
}
this.addSecrets = function(){
return this.secret1 + this.secret2;
}
};
var f3 = new myFunction3();
f3.secret1; // exposes the secret!
有關更多示例,請參見console logs at the bottom of this JSFiddle。
我怎樣纔能有私人和公共瓦爾/方法保留其價值,不需要多次調用的函數?
這樣的作品,但我仍然沒有看到如何使用該策略的子方法。 –
你好,我編輯了答案,希望對你有幫助 –