我看这里的时候 感觉有个很奇怪的地方:var getSingle = function( fn ){ var result; return function(){
return result || ( result = fn .apply(this, arguments ) );
}
};在调用 getSingle的时候,每次调用 都会重新声明一个 var result 变量啊, 所以每次 result 都是个新的 空 呀,那后面的判断 就没意义了!!!是不是漏了个立即执行(function(){})() 来包裹一下呀?
1 回答

白猪掌柜的
TA贡献1893条经验 获得超10个赞
嗯 这书我也看过 《JavaScript设计模式与开发实践》,单例模式那块儿。
其实这是一个闭包的问题
你看这一行
var createSingleLoginLayer = getSingle(createLoginLayer)
返回的这个 createSingleLoginLayer
函数始终引用了 result 变量。
因此假设 无论是 createSingleLoginLayer(args1)
还是 createSingleLoginLayer(args2)
其实result 变量从来都是那个一开始那个 result .每次 result 不是空的。
说到底,这就是个闭包的问题。
添加回答
举报
0/150
提交
取消