实现一个单例模式类
七崽爱吃小饼干2026/03/06阅读 1
ES6 Class 单例
特点:语法简洁、线程安全、无论 new 多少次都返回同一个实例。
javascript
class Singleton{
private static instance: null | Singleton = null
private constructor(){ // 不想让别人使用new方法,可以将constructor变成私有的
// 或者可以通过这种方式,让new方法直接返回已经创建好的实例
if(Singleton.instance) return Singleton.instance
Singleton.instance = new Singleton()
return Singleton.instance
}
public static getInstance = () => {
if(!Singleton.instance) return Singleton.instance = new Singleton();
return Singleton.instance
}
}
console.log(Singleton.getInstance() instanceof Singleton)
测试验证
javascript
const s1 = new Singleton();
const s2 = new Singleton();
const s3 = new Singleton();
console.log(s1 === s2); // true
console.log(s2 === s3); // true
s1.sayHello(); // 同一个 ID
s2.sayHello(); // 同一个 ID
核心原理
- 用静态属性保存唯一实例
- 构造函数里判断是否已存在实例
- 存在就直接返回,不存在才创建
- 最终保证全局永远只有一个对象