JavaScript单例模式
一、什么是单例
意思是指获取的对象只有一份。
二、最通用的单例
任何时刻获取SingLeton.instance都是同一个对象
var SingLeton={
instance:{
property:1,
getProperty:function(){return this.property;}
}
}
三、转变成通过函数的方法来获取对象
类似于SingLeton()(),但是问题来了,每次执行都会重新创建instance对象,如果已经存在那么无需再创建
var Singleton=function(){
var instance={
property:1,
getProperty:function(){return this.property;}
}; var getInstance=function(){
return instance;
}
return getInstance; }
console.log(Singleton()());
var Singleton=function(){
var instance=null;
function createInstance(){
return {
property:1,
getProperty:function(){return this.property;}
};
} var getInstance=function(){
instance=instance||createInstance();
return instance;
}
return getInstance; }
console.log(Singleton()());
问题又来了,怎么不像其他语言那样,通过SingLeton.getInstance()来获取对象呢
四、自调用函数
要想改造成SingLeton.getInstance(),那SingLeton必须一出来就是一个对象,该对象包含一个方法,可以返回instance对象,我们想到采用让函数立即执行的方式
var Singleton=(function(){
var instance=null;
function createInstance(){
console.log("create");
return {
property:1,
getProperty:function(){return this.property;}
};
}
return {
getInstance:function(){
instance=instance||createInstance();
return instance;
}
} })()
console.log(Singleton.getInstance());
console.log(Singleton.getInstance()); //result:
create
Object {property: 1}getProperty: (){return this.property;}
Object {property: 1}getProperty: (){return this.property;}
至此单例出来了,可以验证下
JavaScript单例模式的更多相关文章
- javascript单例模式的理解
javascript单例模式的理解 阅读目录 理解单例模式 使用代理实现单例模式 理解惰性单例 编写通用的惰性单例 单例模式使用场景 回到顶部 理解单例模式 单例模式的含义是: 保证一个类只有一个实例 ...
- 浅析Javascript单例模式
定义 保证一个类仅有一个实例,并提供一个访问它的全局访问点 .就想我们在开发中有些对象只需要一个,例如window对象. 1. 实现单例模式 var Singleton = function( nam ...
- [转] JavaScript 单例模式
定义 确保一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式使用的场景 比如线程池.全局缓存等.我们所熟知的浏览器的window对象就是一个单例,在JavaScript开发中,对于这种只需要 ...
- Javascript单例模式概念与实例
前言 和其他编程语言一样,Javascript同样拥有着很多种设计模式,比如单例模式.代理模式.观察者模式等,熟练运用Javascript的设计模式可以使我们的代码逻辑更加清晰,并且更加易于维护和重构 ...
- 轻松掌握:JavaScript单例模式
单例模式 定义:保证一个对象(类)仅有一个实例,并提供一个访问它的全局访问点: 实现原理:利用闭包来保持对一个局部变量的引用,这个变量保存着首次创建的唯一的实例; 主要用于:全局缓存.登录浮窗等只需要 ...
- 深入理解 JavaScript 单例模式 (Singleton Pattern)
概念 单例模式,也叫单子模式,是一种常用的软件设计模式.在应用这个模式时,单例对象的类必须保证只有一个实例存在. 核心:确保只有一个实例,并提供全局访问. 实现思路 一个类能返回对象一个引用(永远是同 ...
- javascript单例模式及开发实践
定义: 保证一个对象(类)仅有一个实例,并提供一个访问它的全局访问点: 实现原理: 利用闭包来保持对一个局部变量的引用,这个变量保存着首次创建的唯一的实例; 主要用于: 全局缓存.登录浮窗等只需要唯一 ...
- JavaScript 单例模式实现
Singleton模式指的是调用一个类,任何时候返回的都是同一个实例. 对于Node来说,模块文件可以看成是一个类.怎么保证每次执行这个模块文件,返回的都是同一个实例呢? 很容易想到,可以把实例放到顶 ...
- javascript单例模式(懒汉 饿汉)
第一种:懒汉模式 var Singleton=(function(){ var instantiated; //比较懒,在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢 functi ...
随机推荐
- JavaScript简介、语法
一.JavaScript简介 1.JavaScript是个什么东西? 它是个脚本语言,需要有宿主文件,它的宿主文件是HTML文件. 2.它与Java什么关系? 没有什么直接的联系,Java是Sun公司 ...
- android视频播放
视频播放我们用到的是MediaPlayer,显示控件使用的surfaceView 我们向SD卡中先添加个视频文件,我的是xajh.3gp,不要用mp4,MP4会出现 should have subti ...
- 【HDOJ】5096 ACM Rank
Treap+set仿函数重定义.每当ac一道题目时,相当于对总时间减去一个大数. /* 5096 */ #include <iostream> #include <string> ...
- git tag的使用
查看所有的标签git tag 删除某一个标签git tag -d tagName 创建带注释的标签 git tag -a tagName -m "annotate" 轻量级标签 g ...
- Muduo源码库研究(笔记汇总)
声明: 本人学习Muduo源码, 有些代码会对其进行精简, 加上本人的一些理解, 所以与作者的代码可能有些不同. 如有理解错误的地方欢指出. Muduo基础库-时间戳类 http://www.cnbl ...
- 设计模式(c#)代码总结
设计模式分为三种类型 创建型模式:简单工厂.工厂方法模式.抽象工厂模式.建造者模式.原型模式.单例模式 结构型模式:适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代理模式. 行为型模式 ...
- web开发小节.txt
我最近一直在看这个的java web项目涉及到的知识,今天突然感觉思路烁然开明. 我们经常会将java web开发说成是MVCV: view 我在这里姑且就介绍JSP吧.JSP其实就是在原来的静态页面 ...
- __str__
__str__是被print函数调用的,一般都是return一个什么东西.这个东西应该是以字符串的形式表现的.如果不是要用str()函数转换.当你打印一个类的时候,那么print首先调用的就是类里面的 ...
- Linux系统下使用crontab添加计划任务的方法
在服务器中添加定期执行的任务,在很多情况下是非常必要的.比如,每天清理一次/tmp目录下的文件;没几分钟检查某一守护进程是否正常等等.这样计划任务就显得尤为方便.下面将介绍如何在Linux系统中 ...
- Javascript 查找字符串中出现最多的字符和出现的次数
<script type="text/javascript"> //查找字符串中出现最多的字符和出现的次数 var str = 'Thatwheneying its o ...