class LoginForm { private state: string = 'hide' // or show private constructor() {} show() { if (this.state === 'show') { console.log('already show'); return; } console.log('显示的逻辑') this.state = 'show' } hide() { if (this.state === 'hide') { console.log('already hide'); return; } console.log('隐藏的逻辑') this.state = 'hide' } private static instance: LoginForm | null = null static getInstance(): LoginForm { // 在 static this => LoginForm if (this.instance == null) { this.instance = new LoginForm() } return this.instance; }}const login1 = LoginForm.getInstance();const login2 = LoginForm.getInstance();console.log(login1 === login2) // true
其他
- 自定义事件 EventBus 全局唯一
- Vuex Redux 的 store 全局唯一
- (严格的单例模式应用不多,但单例的思想随处可见)