为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

呼啦一阵风 2018-10-04 14:19:19
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即可。


查看完整回答
反对 回复 2018-11-07
  • 1 回答
  • 0 关注
  • 560 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信