JavaScript 单例模式
来源:互联网 发布:淘宝开放平台api 申请 编辑:程序博客网 时间:2024/06/16 05:07
单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象。
最基本的单例模式——对象字面量
对象字面量可以包含大量的属性和方法,将这些方法和属性组织在一起
var Singleton = { attribute1: true, attribute2: 10, method1: function() { }, method2: function(arg) { }};Singleton.attribute1 = false;var total = Singleton.attribute2 + 5;var result = Singleton.method1();
使用闭包
如果以后要扩展该对象,你可以添加自己的私有成员和方法,使用闭包将其封装这些变量和函数声明,只暴露你想暴露的public成员和方法。
var Singleton = (function() { // Private members. var privateAttribute1 = false; var privateAttribute2 = [1, 2, 3]; // Private function function privateMethod1() { ... } function privateMethod2(args) { ... } return { // Public members. publicAttribute1: true, publicAttribute2: 10, publicMethod1: function() { ... }, publicMethod2: function(args) { ... } };})();var singleton = Singleton();singleton.publicMethod1();
惰性实例化
前面所讲的单例模式都有一个共同特点,单例对象都是在脚本加载时被创建出来,对于资源密集型的或配置开销甚大的单体,也许更合理的做法是将其实例化推迟到需要使用时才实例化。它最常用于那些必须加载大量数据的单体。惰性加载单体的特别之处在于,对他们的访问必须借助于一个静态方法。应该这样调用其方法:Singleton.getInstance().methodName()。getInstance()方法会检查单体是否已经被实例化,如果还没有,那么创建并返回其实例,如果单体已经实例过,那么将返回现有实例。
var Singleton = (function() { var instanced; function constructor () { var privateAttribute1 = false; var privateAttribute2 = [1, 2, 3]; function privateMethod1() { ... } function privateMethod2(args) { ... } return { publicAttribute1: true, publicAttribute2: 10, publicMethod1: function() { ... }, publicMethod2: function(args) { ... } }; } return { getInstance: function () { if (!instanced) { instanced = constructor(); } return instanced; } };})();Singleton.getInstance().publicMethod1();
- Javascript单例模式
- JavaScript 单例模式
- javascript 单例模式
- JavaScript单例模式
- javascript 单例模式
- javascript 单例模式
- javascript--单例模式
- JavaScript 单例模式
- javascript单例模式
- Javascript单例模式
- JavaScript单例模式
- javascript单例模式
- Javascript单例模式
- JavaScript中的单例模式
- JavaScript之单例模式
- Javascript的单例模式
- javascript中的单例模式
- JavaScript中的单例模式
- 13年上半年总结记
- The Star Zoo——2、A spaceship made of plastic
- 关于java中 UnsupportedOperationException
- Android开发重要参考资料
- Android原始资源的使用
- JavaScript 单例模式
- java_集合
- 在Dialog中使用Menu和Toolbar
- 数组元素的平移
- Android中Webview使用经验总结
- java_网络编程
- 如何制作科技论文中的Figures
- 直接写IO端口0x64完成计算机重启操作
- Spring攻略笔记-3 自动装配