我已经创建了一个类,但是我在从私有(private)方法访问公共(public)方法时遇到了一些问题。我的例子是这样的:
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
};
};
...
关于javascript - 单例访问私有(private)方法访问公共(public)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20192452/