单例模式实现方案常用的有三种,其中有:全局变量方案、立即执行函数方案和惰性函数方案。前二者都是比较大众化的方案,没有什么好说的。这里着重看一下惰性函数的实现原理,不多说的,直接贴代码了。
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原型上的属性和方法均可实现共享。

发表评论