单例模式:

  • 要求一个类只有一个实例化对象存在
  • 这个实例化对象必须提供一个全局对外访问方式
  • 这个实例化对象应当是私有的,不能被外界直接访问或者更改

方式1 get实现

  • 唯一实例化:判断这个对象是否存在,如果存在就返回,不再创建
  • 全局访问:静态
  • 私有:get只读,没有set,只读不写
export default class Model3 {
constructor() { }
static get instance() {
if (!Model3._instance) {
Object.defineProperty(Model3, "_instance", {
value: new Model3()
});
}
return Model3._instance;
}
}

方式2 闭包实现

  • 唯一实例化:如果存在,返回存在,不再新建
  • 全局访问:返回一个class,class内设置静态方法getInstance
  • 私有:通过闭包实现,外部函数设置变量,内部调用这个变量
export default (function(){
var _instance;
return class Model1{
static getInstance(){
if(!_instance) _instance = new Model1();
return _instance;
}
}
})();

JavaScript 实现单例模式的两种方式的更多相关文章

  1. Javascript绑定事件的两种方式的区别

    命名函数 <input type="button" onclick="check()" id="btn"/> <scrip ...

  2. Java实现单例模式的两种方式

    单例模式在实际开发中有很多的用途,比如我们在项目中常用的工具类,数据库等资源的连接类.这样做的好处是避免创建多个对象,占用内存资源,自始自终在内存中只有一个对象为我们服务. 单例对象一般有两种实现方式 ...

  3. JavaScript创建表格的两种方式

    方式一: var data = [ { id: 1, name: "first", age: 12 }, { id: 2, name: "second", ag ...

  4. Flex(ActionScript)与JavaScript交互的两种方式示例

    随着各单位部门信息化进程的不断发展,互通互联.共享协调不断的被越来越多的客户所重视.很多新项目都要去必须能够集成已有的早期系统,至少也要能够实现交互对接.今天跟大家分享的是系统对接中ActionScr ...

  5. javascript获取属性的两种方法及区别

    javascript获取属性有两种方式,点或者中括号: var obj={} obj.x=1 console.log(obj.x)//1 第一种方式,x是字面量 try{ console.log(ob ...

  6. VS Code - Debugger for Chrome调试JavaScript的两种方式

    VS Code - Debugger for Chrome调试JavaScript的两种方式 最近由于出差的缘故,博客写的不是很多,一直想写一篇VS Code - Debugger for Chrom ...

  7. 单例模式的两种实现方式对比:DCL (double check idiom)双重检查 和 lazy initialization holder class(静态内部类)

    首先这两种方式都是延迟初始化机制,就是当要用到的时候再去初始化. 但是Effective Java书中说过:除非绝对必要,否则就不要这么做. 1. DCL (double checked lockin ...

  8. JavaScript对象属性访问的两种方式

    JavaScript对象属性访问的两种方式 object.attribute object["attribute"] 例如: var employees = [ { "f ...

  9. 【javascript】原生js更改css样式的两种方式

    下面我给大家介绍的是原生js更改CSS样式的两种方式: 1通过在javascript代码中的node.style.cssText="css表达式1:css表达式2:css表达式3  &quo ...

随机推荐

  1. 一点点学习PS--实战一

    1.安装ps cc 2017,软件包获取:关注公众号软件管家 2.ps常用快捷键 ALT+J 复制图层 CTRL+T 旋转(右键点击可垂直翻转,画倒影常用) CTRL+M  曲线,提亮图片颜色 CTR ...

  2. Oracle tnsnames.ora

    安装过ORACLE的都知道,oracle安装时需要进行配置,这个配置可以在客户端的企业管理器一步一步进行,或者直接拷贝一个tnsnames.ora文件到安装目录下(c:\app\Administrat ...

  3. shell内置命令和外部命令的区别

    内部命令实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留 ...

  4. 【NOIP2001普及组】最大公约数和最小公倍数问题

    P1029 最大公约数和最小公倍数问题 最大公约数用辗转相除法: 最小公倍数:两个数的乘积=他们的最大公约数*最小公倍数,既然两个数的乘积及其最大公约数已知,那么最小公倍数也可以求了. #includ ...

  5. python selenium设计模式POM

    POM模式是什么 页面对象模型(POM)是一种设计模式,用来管理维护一组web元素集的对象库 在POM模式下,应用程序的每一个页面都有一个对的page class 每一个page class维护着该w ...

  6. 2.8 (显示、隐式、线程休眠) selenium 等待方式 ❀

    http://blog.csdn.net/pf20050904/article/details/20052485 http://www.cnblogs.com/hellokitty1/p/629584 ...

  7. sql避免科学计数法并保留两位小数

    SELECT trim(to_char(), ), ,), '9999,999,990.00')) AS CAvgPrice FROM POSITION a 结果: 以trim(to_char(ROU ...

  8. 计划任务:at和crontab

    一.概述 作为一名运维人员,你经常需要将某些命令或脚本放入计划任务中去执行.例如,服务器在白天的访问量一般较大,而服务器在承受巨大访问压力的同时对其进行全备份是不合适的,这时候就可以考虑将备份工作放入 ...

  9. SAIF anno

    https://www.cnblogs.com/IClearner/p/6898463.html SAIF--RTL BACK分析法 RTL backward SAIF文件是通过对RTL代码进行仿真得 ...

  10. C#中数据类型char*,const char*和string的三者转换

    C#中数据类型char*,const char*和string的三者转换: . const char* 和string 转换 () const char*转换为 string,直接赋值即可. EX: ...