单例模式
/**
* 1.最简单的单体模式就是一个对象字面量,用于将一组属性和方法组织在一起。
*/
var Application = {
version: 1.0,
getAppInfo: function () {
return "app";
}
};
/**
* 2. 为了能在单例对象中创建真正的私有变量,可以使用闭包。
* 由于单例对象只会存在一份,因此可以忽略私有属性占有的内存空间问题。
*/
var Application2 = (function () {
//私有属性
var version = 1.0;
var author = "test";
//私有方法
function privateMethod() {
//......
}
/**
* 返回的对象包含的属性和方法都是公有的,可以在外部调用的!
*/
return {
getVersionNumber: function () {
return version;
},
getAuthor: function () {
return author;
}
}
})();
/**
* 3. 懒加载的单例对象(不常用,只适用于那些实例化成本很高,具有大量数据需要加载的单例对象)。
* 一般的单体最好还是立即实例化!
*/
var Application3 = (function () {
var instance;
//将上面例子中单体的代码移到一个构造化函数中来
function constructor() {
//私有属性
var version = 1.0;
var author = "test";
//私有方法
function privateMethod() {
//......
}
/**
* 返回的对象包含的属性和方法都是公有的,可以在外部调用的!
*/
return {
getVersionNumber: function () {
return version;
},
getAuthor: function () {
return author;
}
}
}
return {
getInstance: function () {
if (!instance) {
instance = constructor();
}
return instance;
}
}
})();
alert(Application2.getVersionNumber()); //调用立即实例化的单例对象
alert(Application3.getInstance().getAuthor());//调用懒加载的单体对象
版权声明:本文为博主原创文章,未经博主允许不得转载。