使用场景
- 当在某个上下文中,要求某个东西只能有唯一一个,只要被创建一次,后面再去创建也应用的是第一次创建的,因此一般是一个引用类型的东西。
实现思想
- 在具有类概念的编程语言中,一般是在类中设置一个静态变量来保存第一次创建的那个对象,以后每次创建都返回这个静态变量。
- 在js中一般采用闭包的形式来完成,当然ES6中提供类的写法,但是只是语法糖而已。
具体代码
var mySingleTon = (function () {
var UNIQUE_INSTANCE = null;
function init() {
var privateVariable = '我是一个私有的变量';
function privateMethod() {
console.log('我是一个私有的方法');
}
return {
name: '我是一个外部可以访问的属性',
publicMethod: function () {
console.log('我是一个外部可以访问的方法');
},
getPrivateVariable: function () {
return privateVariable;
}
};
}
return {
getInstancce: function () {
if (UNIQUE_INSTANCE === null) {
UNIQUE_INSTANCE = init();
}
return UNIQUE_INSTANCE;
}
};
})();