基于JavaScript实现单例模式

 更新时间:2019年10月30日 09:27:11   作者:卑微小陈的随笔  
这篇文章主要介绍了基于JavaScript实现单例模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

首先,了解一下什么是单例模式,这里我直接把菜鸟教程中的定义给copy过来:

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

注意:

1、单例类只能有一个实例。

2、单例类必须自己创建自己的唯一实例。

3、单例类必须给所有其他对象提供这一实例。

用一句话来总结就是:在单例模式中,一个类仅有一个实例,并提供一个访问它的全局访问点。这无非是用一个变量来标志当前是否已经为某个类创建过对象,如果是,则在下一次获取该类的实例时,直接返回之前创建的对象,在JavaScript我们很自然而然就会想到用闭包来解决这个问题。

比如说需要生成一个页面登录框,因为有且只可能有一个登录框,那么你就可以用单例的思想去实现他,代码如下:

let createLoginWindow = function(title) {
  this.title= title;
  this.init();
}

createLoginWindow.prototype.init = function() {
  // some code
  
}
let proxySingleton = (function() {
  var instance;
  return function(title) {
    if (!instance) {
      instance = new createLoginWindow(title);
    }
    return instance;
  }
})();
let windowA = new proxySingleton('login1');
let windowB = new proxySingleton('login2');

console.log(windowA === windowB); // true

可以看到,上述代码中createLoginWindow负责构造对象,然后通过代理proxySingleton来判断是构造新的对象还是返回已有对象。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • JavaScript垃圾回收机制原理总结深入探究

    JavaScript垃圾回收机制原理总结深入探究

    就像人类会产生垃圾一样,程序运行过程中也会产生垃圾,如果不及时回收轻则将会拖慢程序运行,重则会导致系统崩溃,也就是所谓的内存泄漏。所以垃圾回收非常必要
    2022-10-10
  • JavaScript实现LI列表数据绑定的方法

    JavaScript实现LI列表数据绑定的方法

    这篇文章主要介绍了JavaScript实现LI列表数据绑定的方法,可实现绑定Li列表项对应数值项的功能,涉及javascript鼠标onmousemove、onmouseout及onclick等事件的相关使用技巧,需要的朋友可以参考下
    2015-08-08
  • JavaScript的内置对象Date详解

    JavaScript的内置对象Date详解

    这篇文章主要为大家介绍了vue组件通信的几种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • js正则表达式replace替换变量方法

    js正则表达式replace替换变量方法

    这篇文章主要介绍了js正则表达式/replace替换变量方法 ,最近项目任务繁重,更新博客会较慢,不过有时间希望可以把自己的积累分享出来,需要的朋友可以参考下
    2016-05-05
  • 手机号码,密码正则验证

    手机号码,密码正则验证

    神奇的正则表达式可以帮助我们搞定所需的格式验证,常用的有手机号码,密码等,另附上做项目经常用到的一些正则,记录一下
    2014-09-09
  • 5个javascript的数字格式化函数分享

    5个javascript的数字格式化函数分享

    Javascript没有任何内建的格式化函数,这里我们通过Google收集了5个javascript的数字格式化函数,希望对于大家的web开发能够带来方便
    2011-12-12
  • TypeScript中枚举类型的理解与应用场景

    TypeScript中枚举类型的理解与应用场景

    如 TypeScript 官方文档所说,枚举类型是对 JavaScript 标准数据类型集的扩充,所以下面这篇文章主要给大家介绍了关于TypeScript中枚举类型的理解与应用场景的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-09-09
  • js实现弹幕飞机效果

    js实现弹幕飞机效果

    这篇文章主要为大家详细介绍了js实现弹幕飞机效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • 小程序原生实现左滑抽屉菜单

    小程序原生实现左滑抽屉菜单

    在移动端,侧滑菜单是一个很常用的组件,本文就详细的介绍小程序原生实现左滑抽屉菜单,具有一定的参考价值,感兴趣的可以了解一下
    2021-07-07
  • window.returnValue使用方法示例介绍

    window.returnValue使用方法示例介绍

    returnValue是javascript中html的window对象的属性,目的是返回窗口值,下面有个示例,大家可以感受下
    2014-07-07

最新评论