尝试在一些教程之后在javascript中实现单例模式。只是想知道是否有其他方法可以实现相同的目标?
var singleton = (function(){
var getInstance; //private variable
var createWidget = function(){
var todayDate = new Date(); //private
var addCSS = function(){
console.log('THis is my css function');
};
var getDropDownData = function(){
console.log('This is my getDropDownData function');
};
return {
getDropDownData : getDropDownData,
addCSS: addCSS
};
};
return {
getInstance: function(){
if(!getInstance) {
getInstance = createWidget();
}
return getInstance;
}
};
})();
var obj = singleton.getInstance();
通过在onLoad上运行匿名函数并将其分配给某个变量来实现它。我们可以在不在onLoad上运行此函数的情况下实现它吗?
答案 0 :(得分:0)
你总是可以编写一个函数来抽象出用于编写单例的样板文件。例如,这就是我要做的事情:
function singleton(prototype) {
var instance = null;
return {
getInstance: function () {
if (instance === null) {
var Instance = prototype.init || function () {};
Instance.prototype = prototype;
instance = new Instance;
} return instance;
}
};
}
然后你可以使用这个函数创建单例,如下所示:
var Widget = singleton({
init: function () {
var todayDate = new Date; // private
},
addCSS: function () {
console.log("This is my addCSS function.");
},
getDropDownData: function () {
console.log("This is my getDropDownData function.");
}
});
之后你会像往常一样使用单身人士:
var widget = Widget.getInstance();
希望有所帮助。