JavaScript设计模式之单例模式详解
发布时间 - 2026-01-11 01:48:40 点击率:次最近项目不太忙,难得有时间看看书,平时挺喜欢js这门语言。也看过很多高级教程,觉得自己还是比较热衷于js的设计模式。这一次重温一下《JavaScript设计模式与开发实践》,开篇为单例模式。
/**
* pre 单例模式
* 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点
* 应用:单例模式是一种常用的模式,有一些对象我们往往只需要一个,
* 比如线程池、全局缓存、浏览器中的 window 对象等。
*/
//--------------singleton-01-------------
/*写法1*/
var Singleton = function(name){
this.name = name;
this.instance = null;
};
Singleton.prototype.getName = function(){
alert(this.name);
};
Singleton.getInstance = function(){
if(!this.instance){
this.instance = new Singleton(name);
}
return this.instance;
};
var a = Singleton.getInstance("amy");
var b = Singleton.getInstance("ben");
alert(a === b);
// ------------singleton-02----------------
/*写法2*/
var Singleton = function(name){
this.name = name;
}
Singleton.prototype.getName = function(){
return this.name;
}
Singleton.getInstance = (function(){
var instance = null;
return function(name){
if(!instance){
instance = new Singleton(name);
}
return instance;
}
})();
var a = Singleton.getInstance("amy");
var b = Singleton.getInstance("ben");
alert(a === b);
// ------------singleton03-----------
/*写法3*/
var Singleton = (function(){
var instance;
return function(name){
if(instance){
return instance;
}
this.name = name;
instance = this;
}
})();
var a = new Singleton("amy");
var b = new Singleton("ben");
alert(a === b);
//---------------- 示例 ---------------
var getSingleton = function(fn) {
var result;
return function() {
if(!result) {
result = fn.apply(this, arguments);
}
return result;
}
};
var getSingletonVip = (function() {
var instance;
return function(fn) {
return instance || (instance = fn.apply(this, arguments));
}
})();
var createLoginUser = function() {
var div = document.createElement("div");
div.innerHTML = '这是登录框';
document.body.appendChild(div);
return div;
};
var createInfoGrid = function() {
var div = document.createElement("div");
div.innerHTML = '这是列表信息框';
document.body.appendChild(div);
return div;
};
//--执行singleton1
var createUserDiv = getSingleton(createLoginUser);
createUserDiv();
createUserDiv();
//--执行singleton2
getSingletonVip(createLoginUser);
getSingletonVip(createLoginUser);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js
# 单例模式
# JavaScript设计模式---单例模式详解【四种基本形式】
# JS 设计模式之:单例模式定义与实现方法浅析
# javascript设计模式 – 单例模式原理与应用实例分析
# 原生javascript单例模式的应用实例分析
# 基于JavaScript实现单例模式
# js设计模式之单例模式原理与用法详解
# JavaScript设计模式之单例模式原理与用法实例分析
# JavaScript设计模式之单例模式简单实例教程
# JavaScript实现单例模式实例分享
# NodeJS设计模式总结【单例模式
# 适配器模式
# 装饰模式
# 观察者模式】
# javascript 单例模式详解及简单实例
# 解析Javascript单例模式概念与实例
# 怎样用Javascript实现单例模式
# 这是
# 是一种
# 觉得自己
# 只需要
# 提供一个
# 这门
# 大家多多
# 太忙
# 有一个
# 器中
# 平时
# singleton
# window
# appendChild
# function
# instance
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
高端建站三要素:定制模板、企业官网与响应式设计优化
zabbix利用python脚本发送报警邮件的方法
如何在IIS中新建站点并解决端口绑定冲突?
Android使用GridView实现日历的简单功能
EditPlus中的正则表达式 实战(4)
如何在IIS管理器中快速创建并配置网站?
如何将凡科建站内容保存为本地文件?
IOS倒计时设置UIButton标题title的抖动问题
Laravel如何优化应用性能?(缓存和优化命令)
Laravel如何使用Telescope进行调试?(安装和使用教程)
javascript如何操作浏览器历史记录_怎样实现无刷新导航
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
EditPlus中的正则表达式实战(6)
LinuxCD持续部署教程_自动发布与回滚机制
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
如何在 React 中条件性地遍历数组并渲染元素
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
手机软键盘弹出时影响布局的解决方法
js实现点击每个li节点,都弹出其文本值及修改
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
利用python获取某年中每个月的第一天和最后一天
如何快速建站并高效导出源代码?
JavaScript模板引擎Template.js使用详解
JavaScript如何实现路由_前端路由原理是什么
JS碰撞运动实现方法详解
iOS中将个别页面强制横屏其他页面竖屏
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
使用Dockerfile构建java web环境
JavaScript如何实现继承_有哪些常用方法
Laravel观察者模式如何使用_Laravel Model Observer配置
网站制作软件有哪些,制图软件有哪些?
Laravel如何实现用户注册和登录?(Auth脚手架指南)
微信小程序 canvas开发实例及注意事项
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
Laravel如何实现本地化和多语言支持?(i18n教程)
如何挑选高效建站主机与优质域名?
米侠浏览器网页背景异常怎么办 米侠显示修复
如何在云指建站中生成FTP站点?
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
大同网页,大同瑞慈医院官网?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
网站建设保证美观性,需要考虑的几点问题!
下一篇:Linux环境搭建
下一篇:Linux环境搭建

