单例模式实现方案常用的有三种,其中有:全局变量方案、立即执行函数方案和惰性函数方案。前二者都是比较大众化的方案,没有什么好说的。这里着重看一下惰性函数的实现原理,不多说的,直接贴代码了。
function Tool () { var instance = this; var oldPrototype = Tool.prototype; this.name = '我的工具箱'; Tool = function () { return instance; } Tool.prototype = oldPrototype; instance = new Tool(); instance.constructor = Tool; return instance; } var t1 = new Tool(); var t2 = new Tool(); Tool.prototype.ask = function () { console.log('我这里有你需要的所有工具集!'); } t1.ask(); t2.ask();
最终实现的效果是,使用构造函数Tool实例出来的对象,都是引用同一个指向(堆内存空间),Tool原型上的属性和方法均可实现共享。
发表评论