var foo= {} ;foo.method() 和 function foo有什么区别

var Foo={}
Foo.method = function() {
        return {
            a:function(){
                console.log('aa')
            },
            b:function(){
                console.log('bb')
            }
        }
}
Foo.method().a();
Foo.method().b();

var bar=(function(){
    var instance;
    function init(){
        return {
            a:function(){
                console.log('cc')
            },
            b:function(){
                console.log('ee')
            }
        }
    }
    return {
        method : function (){
            if(!instance) {
                instance = init()
            }
            return instance
        }
    }
}());
bar.method().a()

```
一直弄不懂 这两种写法有什么区别 分别适应于什么情况 那个写法更优一点呢? 跪求解惑

阅读 4.2k
2 个回答

直接一点的区别:

javascriptvar aaa = Foo.method();
var bbb = Foo.method();
aaa === bbb; //false

var ccc = bar.method();
var ddd = bar.method();
ccc === ddd; //true

第二种方式相当于对执行结果做了缓存,好处就是缓存该有的好处(再次读取时更快),坏处也是缓存的坏处(占用资源/内存 更多,更久)。

第二种是单例的实现方式

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题