单例模式:一个类只有一个实例
实现
立即执行函数实现
let Singleton = (function() {
let instance = null;
return function(name, age) {
if(instance) { // 存在实例直接返回
return instance;
}
instance = this; // 第一次new则保存(缓存)实例
this.name = name;
this.age = age;
};
})();
const test1 = new Singleton('jack', 11);
const test2 = new Singleton('tom', 22);
console.log(test1 == test2); // true
惰性函数实现(推荐)
var Singleton = function(name, age) {
let install = this;
this.name = name;
this.age = age;
Singleton = function(name) {
return install;
}
}
const test1 = new Singleton('jack', 11);
const test2 = new Singleton('tom', 22);
console.log(test1 === test2); // true