Javascript成员函数调用另一个成员函数

时间:2017-07-18 00:22:30

标签: javascript ecmascript-6

考虑这个javascript:

let m = {
  add: (a,b) => a+b,
  subtract: (a,b) => a-b,
  doit: () => console.log(this.add(5,4)),
};

m.doit();

当我运行此代码时,出现以下错误:

  doit: () => console.log(this.add(5,4)),
                               ^
TypeError: this.add is not a function

add内调用doit函数的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

箭头函数使用外部作用域中的this,但不使用它们所调用的对象。

试试这个:

let m = {
  add: function(a,b) { return a+b; },
  doit: function() { console.log(this.add(5,4)); }
};

然而,为什么不在这种情况下使用类?

答案 1 :(得分:1)

箭头函数允许使用词法this,它不是m对象,而是定义m的上下文。

对象文字方法的正确短语法是:

let m = {
  add: (a,b) => a+b,
  subtract: (a,b) => a-b,
  doit() {
    console.log(this.add(5,4));
  }
};