首页 > Web开发 > 详细

JS 单例

时间:2019-07-17 16:42:30      阅读:83      评论:0      收藏:0      [点我收藏+]

1、普通的单例

 

    //通过确保单例对象只存在一个实例
    //你就可以确信自己在所有的代码中使用的是全局资源
   (function() {
      //UserInfo 已经被实例化 而且只能实例化一次 单体
      // 先来看一个最简单的单体
      // 用户登录后的信息可以用一个单体存储
      var UserInfo = {
        name: "s",
        code: "00101",
        deptName: "PD",
        deptCode: "PD001",
        getName: function() {
          return "sssjjj"
        }
      }
      alert(UserInfo.getName())
      //这就是一个简单地单体,
      //它用来划分命名空间,并且将一群相关的属性方法组织到一起
      //我们可以用.来访问它
      var comm = {} //简单单体 命名空间使用
      comm.UserInfo = {
        name: ‘s‘,
        code: ‘0101‘
      }
      comm.funcInfo = {
        funcName: ‘‘,
        funcCode: ‘‘
      }
      //在大型项目下 存在你写的代码 还有你引用的js类库 还有其他同事写的代码和类库
      //我们通过单体模式就可以很好地区分他
   })()

2、具有局部变量的强大单例

 

    function Ajax() {

    }
    Ajax.request = function(url,fn) {
      if(true) {
        fn(‘sd.com‘,‘extjs4‘)
      }
    }
    //我们通过闭包的原理解决在上个例子中出现的问题 1、UserInfo 应该要ajax获取 2、实例化过程没有
    var UserInfo = (function() {
      //利用闭包使单体有自己的私有局部变量
      var name = "";
      var code = "";
      //利用ajax访问数据库去的数据
      Ajax.request("www.sd.com",function(n,c) {
        name = n
        code = c
      })

      return {  //为这个单例添加后台返回的两个局部变量数据
        name: name,
        code: code
      }

    })()

    alert(UserInfo.name)
    // 弊端 在于 return数据如果太大的话 系统加载上来就执行 影响性能 ---》 引出下一章 惰性单体

 

3、惰性单体

 

JS 单例

原文:https://www.cnblogs.com/suanmei/p/11201349.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!