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

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

js數(shù)組迭代方法

js數(shù)組迭代方法

手掌心 2018-08-14 09:10:43
有一個構(gòu)造器方法用于構(gòu)建記錄成績的對象,對象原型中含有添加成績,顯示平均成績的方法,對于一個數(shù)組,通過forEach()迭代方法,傳入添加成績的方法,目的在于對沒個成績調(diào)用添加成績方法,然而我測試,報錯就是this.scores.push(score)那里can't read property 'scores' of undefined;代碼:function Score(){    this.scores = []; } Score.prototype.add = function(score){    this.scores.push(score); }; Score.prototype.showAverage = function(){    let sum = this.scores.reduce(function(pre,cur){        return pre+cur;     });    console.log(sum*1.0/this.scores.length); };let scores = [90,80,70];let score1 = new Score(); scores.forEach(score1.add); score1.showAverage();請問這是什么問題呢,求解答
查看完整描述

1 回答

?
心有法竹

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

scores.forEach(score1.add);

改成:

scores.forEach(score1.add.bind(score1));

就好了。

因為,在

scores.forEach(score1.add);

中,存在一個賦值過程,即把score1.add賦給了forEach的內(nèi)部參數(shù)的過程。所以,它相當(dāng)于:

var add0 = score1.add;scores.forEach(add0);

結(jié)果add里面的this就變成了undefined,所以報錯了。

當(dāng)然,你這樣改也可以:

scores.forEach(function(score) {
    score1.add(score);
});


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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