猿问

请大神帮忙解释下这个闭包问题的代码段

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

最近在看闭包,我能理解的程度是外面的函数返回两个函数,应该是个闭包,其余就不知道这段代码干了什么事情了


呼啦一阵风
浏览 561回答 1
1回答

慕慕森

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即可。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答