【JS常见设计模式】单例模式
单例模式
一个类只有一个实例,并暴露出一个点供全局访问
// 类
function Login() {
this.hidden = true;
}
// 原型
Login.prototype = {
constructor: Login,
show: function show() {
this.hidden = true;
console.log('登录框显示')
},
hide: function hide() {
this.hidden = false;
console.log('登录框隐藏')
}
}
// 单例方法
// + 如果没创建实例则创建实例并返回
// + 否则返回已创建的实例
let getLogin = (function () {
let instance;
return function () {
if (!instance) {
instance = new Login()
}
return instance
}
})()
let login1 = getLogin();
let login2 = getLogin();
login1.show() // 登录框显示
login2.hide() // 登录框隐藏
console.log(login1 === login2) // true