第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

大家?guī)兔聪逻@個函數(shù)錯誤出在哪里了

大家?guī)兔聪逻@個函數(shù)錯誤出在哪里了

叮當(dāng)貓咪 2018-10-17 17:14:29
var obj = {  hello: function(n) {    return obj.hello(n-1) + n;  }}var obj2 = {hello: obj.hello};obj = {};console.log(obj2.hello(3));
查看完整描述

1 回答

?
慕田峪7331174

TA貢獻1828條經(jīng)驗 獲得超13個贊

這是典型的引用丟失問題,兩個對象引用了相同的函數(shù),但函數(shù)引用自身的時候只是通過其中的一個對象,當(dāng)obj置為空對象時,obj2對象的匿名函數(shù)仍然存在,但是obj1的屬性已經(jīng)不存在了,而這時再通過原有的obj.hello屬性引用進行遞歸調(diào)用自身時,就會出現(xiàn)嚴(yán)重的問題。
解決方案建議將匿名函數(shù)的obj1顯式引用改成this(函數(shù)上下文),這樣obj2.hello()的this對象就是obj2,如此便可解決問題。
或者使用內(nèi)聯(lián)命名函數(shù),將obj1對象定義如下:

var obj1 = {
  hello: function js(n) {    return js(n-1) + n;
  }
}


查看完整回答
反對 回復(fù) 2018-11-26
  • 1 回答
  • 0 關(guān)注
  • 540 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號