JavaScript中的Singleton模式
Singleton pattern in JavaScript
下面是JavaScript Singleton模式的一个非常流行的实现示例:
var mySingleton = (function() {
var instance;
function init() {
function privateMethod() {
console.log("I am private");
}
var privateVariable = "Im also private";
var privateRandomNumber = Math.random();
return {
publicMethod: function() {
console.log("The public can see me!");
},
publicProperty: "I am also public",
getRandomNumber: function() {
return privateRandomNumber;
}
};
};
return {
getInstance: function() {
if (!instance) {
instance = init();
}
return instance;
}
};
})();
我已经考虑了一段时间,当我们可以用这个简单的代码实现同样的结果时,我真的不明白这种复杂性的必要性:
singleton = (function() {
var obj = {
someMethod: function() {}
}
return obj;
}());
我是不是在俯瞰什么?
是的,在大多数情况下,您不需要这种复杂性,只需要进行
var singleton = {
someMethod: function() {}
};
然而,getSingleton
函数的模式确实有一个优点:只有在调用函数(第一次(时才构造对象,而不是在实际需要对象之前。根据对象的复杂性,这可以提高内存使用率和程序的启动时间。加载模块基本上是懒惰的。
相关文章:
- Javascript,访问一个主要对象模块模式中的每个对象
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 同位素库错误:未捕获错误无布局模式包装生产线8
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 如何缩短MongoDB ObjectId并在Mongoose模式中使用它
- D3.js模式不适用于弧形或圆环图
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- 模块模式和这个
- 带有let的JS/EECMAScript6私有字段的模式
- 我是否可以检测到javascript正在被卸载(作为调试模式)
- 执行动态模式弹出
- 注意:wp_enqueue_script调用不正确.在 Wordpress 调试模式下
- AngularJS ui路由器html5模式中断路由
- 包含圆括号的JavaScript Regex模式
- 显示模块模式在Knockout中设置模型的新实例
- ES6/具有继承性的Meteor-Singleton模式
- 在Java中创建静态Singleton模式
- Javascript Singleton设计模式和闭包
- JavaScript中的Singleton模式