学习JavaScript设计模式之单例模式

 更新时间:2016年01月19日 11:01:29   作者:奋飛  
这篇文章主要为大家介绍了JavaScript设计模式中的单例模式,对JavaScript设计模式感兴趣的小伙伴们可以参考一下

一、定义

保证一个类仅有一个实例,并提供一个访问它的全局访问点。
当单击登陆按钮,页面中出现一个登陆浮窗,这个登陆浮窗是唯一的,无论单击多少次登陆按钮,这个浮窗都只会被创建一次,那么这个登陆浮窗就适合用单例模式来创建。

二、实现原理

要实现单例并不复杂,使用一个变量来标志当前是否已经为某个类创建过对象,如果是,则在下一次获取该类的实例时,直接返回之前创建的对象。

三、假单例

全局变量不是单例模式,但在JavaScript开发中,我们经常会把全局变量当成单例来使用。

var a = {};

降低全局变量带来的命名污染
(1)使用命名空间

var namespace1 = {
  a: function(){},
  b: 2
}

(2)使用闭包封装私有变量

var user = (function() {
  var _name = 'lee',
    _age = '25';
  return {
    getUserInfo: function() {
      return _name + ":" + _age;
    }
  };
})();

四、惰性单例:在需要的时候才能创建对象实例

var getSingle = function(fn) {
  var result;
  return function() {
    return result || (result = fn.apply(this, arguments));
  };
};

// 测试
function testSingle(){}
getSingle(testSingle)() === getSingle(testSingle)();  // true

五、补充:

(1)懒加载

var lazyload = function() {
  console.log(1);
  lazyload = function() {
    console.log(2);
  }
  return lazyload();
}

lazyload();

(2)预加载

var preload = (function() {
  console.log(1);
  preload = function() {
    console.log(2);
  };
  return preload;
})();

preload();

希望本文所述对大家学习javascript程序设计有所帮助。

相关文章

  • uniapp开发h5项目引入第三方js(sdk)两种方法

    uniapp开发h5项目引入第三方js(sdk)两种方法

    这篇文章主要给大家介绍了关于uniapp开发h5项目引入第三方js(sdk)的两种方法,在Uniapp中引入JS文件是一项常见的操作,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • JavaScript监听和禁用浏览器回车事件实例

    JavaScript监听和禁用浏览器回车事件实例

    这篇文章主要介绍了JavaScript监听和禁用浏览器回车事件实例,本文直接给出示例代码,需要的朋友可以参考下
    2015-01-01
  • JS实现同一个网页布局滑动门和TAB选项卡实例

    JS实现同一个网页布局滑动门和TAB选项卡实例

    这篇文章主要介绍了JS实现同一个网页布局滑动门和TAB选项卡效果,通过简单的自定义切换函数setTab实现页面元素的遍历及属性切换的功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • 基于JavaScript实现树形下拉框

    基于JavaScript实现树形下拉框

    这篇文章主要为大家详细介绍了基于JavaScript实现树形下拉框的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • this和执行上下文实现代码

    this和执行上下文实现代码

    Javascript中this关键字通常指向当前函数的拥有者。在javascript中通常把这个拥有者叫做执行上下文。
    2010-07-07
  • 再论Javascript下字符串连接的性能

    再论Javascript下字符串连接的性能

    这是个老话题了,之所以再拿出来说,是因为浏览器一直在进步,以前最好的方法现在不一定是最好的。
    2011-03-03
  • JavaScript 实现类似Express的中间件系统(实例详解)

    JavaScript 实现类似Express的中间件系统(实例详解)

    在 Express 中可以给一个请求设置若干个中间件,在处理响应时会按顺序执行这些中间件,正在执行的中间件可以控制是否执行下一个中间件,这篇文章主要介绍了JavaScript 实现类似Express的中间件系统的相关资料,需要的朋友可以参考下
    2023-02-02
  • laypage+SpringMVC实现后端分页

    laypage+SpringMVC实现后端分页

    这篇文章主要为大家详细介绍了laypage+SpringMVC实现后端分页,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • JavaScript 中 apply 、call 的详解

    JavaScript 中 apply 、call 的详解

    本文主要介绍了JavaScript中apply 、call的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • 用JavaScript实现让浏览器停止载入页面的方法

    用JavaScript实现让浏览器停止载入页面的方法

    下面小编就为大家带来一篇用JavaScript实现让浏览器停止载入页面的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01

最新评论