博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js设计模式之单例模式
阅读量:4974 次
发布时间:2019-06-12

本文共 1741 字,大约阅读时间需要 5 分钟。

废话不多说,直接上代码以供参考吧!

1 var SingleInstanceTest = (function () { 2   var _instance = null;    //  申明一个唯一的对象 3   //  设置默认值 4   var _default = { name: '无名氏',age: 18 }; 5   function SingleInstance(ops) { 6     if (this instanceof SingleInstance) {   //  优化处理不使用new关键字的问题 7       if(_instance == null){   // 每次实例化判断对象是否为空 8         this._init(ops); 9         return _instance = this;10       }else{11         _instance._init(ops);12         return _instance;       13       }14     }else{15       if (!_instance) {16         _instance = new SingleInstance();17         _instance._init(ops);18         return _instance;19       } else {20         _instance._init(ops);21         return _instance;22       }23     }24   }25 26   SingleInstance.prototype._init = function (ops) {27     //  如果传进来的数据为真,则复制给默认数据28     for(var prop in ops){29       if(ops[prop]){30         _default[prop] = ops[prop];31       }32     }33     //  如果传进来的数据不包含默认数据中的字段,则将默认数据中的字段填充进传进来的对象中34     for(var prop in _default){35       this[prop] = _default[prop];36     }37   }38   return SingleInstance;39 })()40 41 var i0 = SingleInstanceTest({ name: '王五' });42 var i1 = new SingleInstanceTest({ name: '张三', age: 20 })43 var i2 = new SingleInstanceTest({ name: '李四' })

 

 再举一个显示与影藏div功能的单例

var Popup = (function() {  var div = document.createElement('div');  document.body.appendChild(div);  var _instance = null;     //  创建一个唯一的对象  return function () {    if (_instance == null){   //  每次实例化判断_instance是否为空      _instance = new Object();      _instance.hide = function () {        div.style.display = 'none';      }      _instance.show = function () {        div.style.display = 'block';      }    }    return _instance;  }})()

 

转载于:https://www.cnblogs.com/cscredis/p/9289473.html

你可能感兴趣的文章
Wannafly模拟赛5 A 思维 D 暴力
查看>>
【Linux开发】CCS远程调试ARM,AM4378
查看>>
Linux之ssh服务介绍
查看>>
Java Swing提供的文件选择对话框 - JFileChooser
查看>>
排序:冒泡排序
查看>>
github下载安装
查看>>
Hat’s Words
查看>>
Java中instanceof关键字的用法总结
查看>>
引用类型-Function类型
查看>>
Nginx Configuration 免费HTTPS加密证书
查看>>
(转)Android 仿订单出票效果 (附DEMO)
查看>>
数据库多张表导出到excel
查看>>
微信小程序去除button默认样式
查看>>
11/26
查看>>
Where does Visual Studio look for C++ Header files?
查看>>
Java打包可执行jar包 包含外部文件
查看>>
Docker容器运行ASP.NET Core
查看>>
WPF图片浏览器(显示大图、小图等)
查看>>
.Net码农学Android---系统架构和基本概念
查看>>
Windows Phone开发(37):动画之ColorAnimation
查看>>