单例模式
单例模式的核心指的是只能有一个实例,并且能提供全局访问的,如果之前已经创建了一个实例,再次new
时返回上一次返回的实例。
js
class FooSingleton {
constructor(name, age) {
// 如果没有这个实例就创建
if (!FooSingleton.instance) {
this.name = name;
this.age = age;
// 把实例挂载到FooSingleton.instance上
FooSingleton.instance = this;
}
return FooSingleton.instance;
}
}
let island = new FooSingleton('_island', '18');
let other = new FooSingleton('无名氏', '18');
console.log(island === other); // true
优缺点
优点:
- 节省开销空间 缺点:
- 不适用带有频繁变化的对象,创建后如果不使用也不会被进行垃圾回收,实例值都是共用的,如果不小心改变了值内容,可能会出现外情况。