JavaScript中最推荐的单例实现是模块级单例,利用ES6模块默认导出的天然单例特性,简洁、可靠且符合语言习惯;其次为ES6 Class配合静态工厂方法,避免直接new;闭包方式适用于ES5环境。

JavaScript 中常用的设计模式有单例、工厂、观察者(发布-订阅)、策略、代理、装饰器、适配器、命令、状态、迭代器等。其中单例模式最常用于管理全局唯一实例,比如配置中心、日志对象、弹窗管理器、状态存储等。
单例模式的核心要点
单例确保一个类只有一个实例,并提供一个全局访问点。关键在于:控制实例创建时机 + 防止重复构造 + 统一返回已有实例。
- 不能直接用
new多次生成新对象 - 首次调用时创建实例,后续调用都返回同一个引用
- 通常封装在闭包或模块作用域中,避免污染全局
基础版单例实现(ES5风格)
用闭包保存私有实例变量,通过静态方法暴露统一入口:
var Singleton = (function() {
var instance = null;
function createInstance() {
return { data: 'I am the only one' };
}
return {
getInstance: function() {
if (!instance) {
instance = createInstance();
}
return instance;
}
};
})();
// 使用
var a = Singleton.getInstance();
var b = Singleton.getInstance();
console.log(a === b); // true
登录后复制
ES6 Class + 静态属性方式(推荐)
更符合现代写法,清晰易读,也支持延迟初始化:
立即学习“Java免费学习笔记(深入)”;
标签: javascript es6 java js ai 作用域
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~