相关疑难解决方法(0)

自动执行函数与对象的闭包

我们说我有以下内容:

var foo = (function(){
    var bar = 0;
    return {
       getBar: function(){
           return bar;
       },
       addOne: function(){
           bar++;
       },
       addRandom: function(rand){
           bar += rand;
       }
    }
})();
Run Code Online (Sandbox Code Playgroud)

我有以下内容:

var foo2 = function(){
    var bar = 0;
    this.getBar = function(){
           return bar;
       };
    this.addOne = function(){
           bar++;
       };
    this.addRandom = function(rand){
           bar += rand;
       }
};
Run Code Online (Sandbox Code Playgroud)

执行函数a的唯一区别是new什么?

alert(foo.getBar()); //0
foo.addOne();
foo.addRandom(32);
alert(foo.getBar()); //33

var foo2_obj = new foo2;
alert(foo2_obj.getBar());//0
foo2_obj.addOne();
foo2_obj.addRandom(32);
alert(foo2_obj.getBar());//33
Run Code Online (Sandbox Code Playgroud)

他们两个都完全相同.

那么长远来看有什么区别?

一个人可以做什么,另一个不能?

以上小提琴演示:http: …

javascript closures object

15
推荐指数
2
解决办法
2679
查看次数

标签 统计

closures ×1

javascript ×1

object ×1