考虑这个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
函数的正确方法是什么?
答案 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));
}
};