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()

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

javascript对象 JavaScript javascript性能

pep525 9 years, 10 months ago

第二种是单例的实现方式

二次元软妹求 answered 9 years, 10 months ago

直接一点的区别:


 javascript


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

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

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

划水的兔先生 answered 9 years, 10 months ago

Your Answer