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 】
相关推荐:
Linux后台任务运行方法_nohup与&使用技巧【技巧】
制作公司内部网站有哪些,内网如何建网站?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
如何在景安服务器上快速搭建个人网站?
Laravel怎么在Blade中安全地输出原始HTML内容
如何快速搭建二级域名独立网站?
如何续费美橙建站之星域名及服务?
如何快速生成凡客建站的专业级图册?
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
香港服务器租用每月最低只需15元?
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
独立制作一个网站多少钱,建立网站需要花多少钱?
如何用美橙互联一键搭建多站合一网站?
如何在不使用负向后查找的情况下匹配特定条件前的换行符
php 三元运算符实例详细介绍
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】
如何快速选择适合个人网站的云服务器配置?
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
详解MySQL数据库的安装与密码配置
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
Swift开发中switch语句值绑定模式
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
如何登录建站主机?访问步骤全解析
如何在Windows 2008云服务器安全搭建网站?
如何正确下载安装西数主机建站助手?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
Laravel如何创建自定义Artisan命令?(代码示例)
Android滚轮选择时间控件使用详解
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
javascript读取文本节点方法小结
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
如何在云虚拟主机上快速搭建个人网站?
Python高阶函数应用_函数作为参数说明【指导】
Laravel定时任务怎么设置_Laravel Crontab调度器配置
长沙做网站要多少钱,长沙国安网络怎么样?
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
Laravel怎么判断请求类型_Laravel Request isMethod用法
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
C++用Dijkstra(迪杰斯特拉)算法求最短路径
Laravel怎么调用外部API_Laravel Http Client客户端使用
JavaScript如何实现错误处理_try...catch如何捕获异常?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
北京网站制作公司哪家好一点,北京租房网站有哪些?
python中快速进行多个字符替换的方法小结
下一篇:Linux环境搭建
下一篇:Linux环境搭建

