单例模式(Singleton)
又被称为单体模式,是只允许实例化一次的对象类。有时我们也用一个对象来规划一个命名空间,井井有条地管理对象上的属性与方法。
const A = {
ajax(){
},
name: 'Lee',
other: {
getName(){
},
},
};
A.ajax();
A.name;
A.other.getName();
单例模式中的私有变量 - 无法修改的静态变量
- ⚠ 注意:
静态变量一般大写
const A = (function(){
// 私有变量
const [A, ...B] = [1, 2, 3];
return {
getA(){
console.log(A);
},
getB(){
console.log(B);
}
}
})();
A.getA(); // 1
A.getB(); // [2, 3]
惰性单例
// 惰性载入单例
var LazySingle = (function () {
// 单例实例引用
var _instance = null;
// 单例
function Single() {
/*这里定义私有属性和方法*/
return {
publicMethod: function () {
this.publicProperty = '2.0';
},
publicProperty: '1.0'
}
}
// 获取单例对象接口
return function () {
// 如果为创建单例将创建单例
if (!_instance) {
_instance = Single();
}
// 返回单例
return _instance;
}
})();
let instance1 = new LazySingle();
let instance2 = new LazySingle();
instance1.publicMethod();
console.log(instance1.publicProperty); // 2.0
console.log(instance2.publicProperty); // 2.0