javascript - 为什么我的 JS 类之间出现引用错误?

标签 javascript

我试图从我的 Leaderboard 类中调用在我的 Player 类中声明的 averageScore() 函数,但是我'我收到引用错误。

将我的 Player 类中的代码拖放到控制台中效果很好,但是当我尝试从 Leaderboard 调用它时,我收到一个 Reference error: add_score is未定义

这是我的玩家类别:

class Player {

  constructor(player_id, score) {
   this.player_id = player_id;
   this.scores = [score];
   this.total = score;
   //this.average = this.total/this.scores.length;
    }

  addScore(score) {
    this.total += score;
    this.scores.push(score);
    return score;
  }

  averageScore() {
    return this.scores.length ? this.total / this.scores.length : 0;
  }

  resetScore() {
    this.scores = [];
    this.score = 0;
    }

  };

这是我的排行榜类:

class LeaderBoard extends Player {

  add_score = (player_id, score) => {
    if (!this.player_id) {
      var newPlayer = new Player(player_id, score);
      this.player_id = newPlayer;
    } else {
      var average = this.player_id.averageScore();
      return average.toFixed(1);
    }

  };
/*...(additional functions and closing bracket excluded)*/

我预计averageScore会显示为add_score调用它,但我得到了引用错误 - 有什么想法吗?

最佳答案

LeaderBoard 扩展 Player 是没有意义的,因为 LeaderBoard 将包含玩家列表

请参阅下面的代码以获取工作示例

class Player {
    constructor(player_id, score) {
        this.player_id = player_id;
        this.scores = [score];
        this.total = score;
        //this.average = this.total/this.scores.length;
    }

    addScore(score) {
        this.total += score;
        this.scores.push(score);
        return score;
    }

    averageScore() {
        return this.scores.length ? this.total / this.scores.length : 0;
    }

    resetScore() {
        this.scores = [];
        this.score = 0;
    }

};
class LeaderBoard {
    constructor() {
        this.players = {};
    }
    addScore(player_id, score) {
        if (!this.players[player_id]) {
            this.players[player_id] = new Player(player_id, score);
        } else {
            this.players[player_id].addScore(score);
        }
        var average = this.players[player_id].averageScore();
        return average.toFixed(1);
    }
};
let x = new LeaderBoard();
console.log(x.addScore(1, 1)); // avg is 1 / 1 === 1
console.log(x.addScore(1, 3)); // avg is (1 + 3) / 2 === 2
console.log(x.addScore(1, 5)); // avg is (1 + 3 + 5) / 3 === 3
console.log(x.addScore(2, 7)); // avg for player 2 is 7 / 1 === 7

关于javascript - 为什么我的 JS 类之间出现引用错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55603384/

相关文章:

javascript - 从 navigator.geolocation.getCurrentPosition 内部调用此函数

javascript - 正则表达式 : Using a negative look ahead for the nonsupported negative look behind and capturing the look behind characters upon split

javascript - 用工具提示的跨度替换标题属性对 SEO 来说是个坏主意吗?

javascript - 在 JavaScript 中将一系列 DOMNodeInserted 事件作为单个事件处理

javascript - 格式化 Ember 图表的数据。

javascript - 滑动下划线边框以与事件网页配合使用

javascript - 如何在 React View 中显示对象数组中的随机值

javascript - 确定在客户端的 DevExpress Pagecontrol 中单击哪个选项卡

javascript - 如何根据条件更改字体粗细,然后根据不同条件更改颜色而不覆盖? (JS)

javascript - ExtJs _dc 参数以 "/"斜杠开头