[英]Singleton Access Private methods acces public methods
我已經創建了一個類,但是在訪問私有方法中的公共方法時遇到了一些麻煩。 我的例子是這樣的:
var mySingleton = (function () {
function init() {
function privateMethod(){
publicMethod();
//this.publicMethod() also doesn't work
}
privateMethod();
return {
publicMethod: function () {
console.log( "The private method called me!" );
}
};
};
return {
getInstance: function () {
if ( !instance ) {
instance = init();
}
return instance;
}
};
})();
var singleton = mySingleton.getInstance();
范圍似乎完全不同。 我應該以其他方式創建單例嗎?
那么為什么不想使用這樣的東西:
var mySingleton = (function () {
/*private methods*/
return {
/*public methods*/
}
})();
如果您的問題正式提出,您需要像這樣更改代碼
...
function init() {
function privateMethod(){
publicMethod();//OK
}
privateMethod();
function publicMethod(){
console.log( "The private method called me!" );
}
return {
publicMethod: publicMethod
};
};
...
不要使用該附加的init
函數。 並且您將必須訪問instance
上的公共方法,即您從init
返回的對象。
var mySingleton = (function () {
var instance = null;
function privateMethod(){
instance.publicMethod();
}
return {
getInstance: function () {
if ( !instance ) {
instance = {
publicMethod: function () {
console.log( "The private method called me!" );
}
};
privateMethod();
}
return instance;
}
};
})();
var singleton = mySingleton.getInstance();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.