Javascript实现单例模式
JavaScript模式 实现 单例
2023-09-11 14:16:51 时间
一般情况下,Javascript每次new一个对象就产生一个实例,实例指向不同的地址。就像如下:
(function(){ function Person(name){ this.name = name; } Person.prototype.work = function(){ console.log(this.name + " is working"); } var p1 = new Person("Darren"); p1.work(); var p2 = new Person("Jack"); p2.work(); }());
以上,每次new出一个Person对象都是不同的。
如何在Javascript中实现单例模式呢?
--在生成某各对象时先判断是否存在。存在就不生成对象,不存在就生成对象。
(function(){ var PersonSingleton = (function(){ var instance; function init(){ return { name: 'Anonymous', work: function(){ console.log(this.name + ' working'); } }; } return { getInstance: function(){ if(!instantiated){ instantiated = init(); } return instantiated; } } })(); var p1 = PersonSingleton.getInstance(); p1.work(); var p2 = PersonSingleton.getInstance(); p2.work(); }());
以上,通过PsonSIngleton对象的getInstance方法得到的实例每次都是一样的。
相关文章
- javascript函数式编程一例分析
- [Javascript] Understanding the difference between .prototype and .__proto__ in JavaScript
- [Javascript] Hide Properties from Showing Up in "for ... in" Loops in JavaScript
- [Javascript] Wrap an API with a Proxy
- [Javascript] Await a JavaScript Promise in an async Function with the await Operator
- [Javascript] Immutable opreators
- [Javascript] Decorators in JavaScript
- [Javascript] Wait for the Fastest JavaScript Promise to Be Fulfilled with Promise.any()
- [Javascript] Create a Custom Iterator for Any Array
- [Javascript] Await a JavaScript Promise in an async Function with the await Operator
- [Javascript] Linting JavaScript with ESLint
- ABAP和JavaScript的懒加载,单例和桥接模式的实现和比较
- 从零开始学_JavaScript_系列(十)——dojo(3)(GRID表格创建、样式、列宽可变、排序、过滤器)