亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請大神幫忙解釋下這個閉包問題的代碼段

請大神幫忙解釋下這個閉包問題的代碼段

呼啦一陣風 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 關注
  • 587 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號