单例模式的封装代码疑问

var getSingle=function(fn){

    var result;

    return function(){

        return result || (result=fn.apply(this,arguments));

    }

}

这是一个单例封装代码:

两个疑问:

 a、在匿名函数的返回中,要返回result || (result=fn.apply(this,arguments)),但是它

 并没有一个判断,比如:

    var obj;

    if(!obj){

       obj=xxx;

    }

 到底要返回哪个呢?还是说哪个值存在,就返回哪个?

 b、result=fn.apply(this,arguments)这个apply方法用在这里没看懂是啥意思,还请大神解惑?

 谢谢!


慕少森
浏览 405回答 1
1回答

慕姐8265434

上面使用一个变量result来保存fn的计算结果。result变量因为身在闭包中, 它永远不会被销毁. 在将来的请求中, 如果result已经赋值, 那么它将返回这个值.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript