function makeCounter(){ var obj = {counter: 0}; return { inc: function(){obj.counter ++;},
get: function(){return obj.counter;}
};
}
counter1 = makeCounter();
counter2 = makeCounter();
counter1.inc();
alert(counter1.get()); // returns 1alert(counter2.get()); // returns 0最近在看闭包,我能理解的程度是外面的函数返回两个函数,应该是个闭包,其余就不知道这段代码干了什么事情了
1 回答
慕慕森
TA贡献1856条经验 获得超17个赞
makeCounter函数返回的是一个对象,该对象为:
{ inc: function(){obj.counter ++;}, get: function(){return obj.counter;} }
counter1.inc(),中inc属性是一个函数的引用,加上括号在后面就是对函数的调用,所以counter1的obj.counter由0变1。counter1.get(),即是调用返回对象中的get属性对应的函数,该函数返回的是obj的counter属性的值,即为改变后的1。用同样的方法去理解counter2即可。
添加回答
举报
0/150
提交
取消