如何在另一种方法中使用方法(ES6类)

时间:2017-05-20 22:14:55

标签: javascript ecmascript-6 es6-class

当我在doTasks方法中使用work方法时,我收到错误“Uncaught TypeError:无法读取未定义的属性'work'”。我并不完全了解发生了什么。

class Employee {
    constructor(name) {
    this.name = name;
    this.totalWorktime = 0;
  }

  work(worktime) {
    this.totalWorktime += worktime;
  }

  doTasks(tasks){
    tasks.forEach(function(element) {
      this.work(element);
   });
  }
}

2 个答案:

答案 0 :(得分:3)

doTasks(tasks) {
  tasks.forEach((element) => {
      this.work(element);
  });
}

删除“功能”所以这真的是“这个”

答案 1 :(得分:1)

你处于不同的封闭状态。 使用箭头符号(推荐)......

doTask(tasks) {
  tasks.forEach((element) => {
    this.work(element);
  });
}

...或者在循环外创建对类实例的引用。

doTasks(tasks) {
  let that = this;
  tasks.forEach(function(element) {
    that.work(element);
 });
}