有没有人发现以下代码块有任何问题可以创建单例?
Singleton = {
getInstance : function() {
if (Singleton._instance)
return Singleton._instance;
Singleton._instance = new function() {
//create object here
};
return Singleton._instance;
}
};
答案 0 :(得分:1)
在Javascript中,使用对象文字创建单例对象通常更简单,并将其放在人们可以获取它的变量中。
var mySingleton = {
some_variable: 10,
some_method: function(x){
console.log(this.some_variable * x);
}
}
mySingleton.some_method();
使用复杂的模式可能有点过分。
答案 1 :(得分:1)
另一个常见的单例模式是“模块模式”,它允许您声明“私有”变量。
var singleton = (function singletonMod() {
// private
var foo = 'foo';
function getFoo() {
return foo;
}
// expose public vars and methods
return {
getFoo: getFoo
};
}());