const md = {
methodOne: () => {
console.log(this.anotherMethod())
},
anotherMethod: () => 'anotherMethod'
}
当我做md.methodOne()
时,我得到了anotherMethod
是未定义的错误。如何在anotherMethod
中呼叫methodOne
?
答案 0 :(得分:0)
问题出在您的箭头功能上。
箭头函数没有自己的this
;使用封闭词法上下文的this
值,即箭头函数遵循正常的变量查找规则。因此,在搜索当前范围中不存在的this
时,他们最终从其包围范围中找到了this
。因此,在下面的代码中,传递给setInterval的函数中的this
与词汇包围函数中的this
具有相同的值:
另外,
您在需要时无需键入return
:
() => return 'some message'
箭头函数将隐式返回表达式的值或结果:
const msg = () => 'some message'
const result = () => 5 * 5; //25
仅出于此目的,这就是它的外观:
const md = {
methodOne:function () {
console.log(this.anotherMethod());
},
anotherMethod: function (){
return 'anotherMethod';
}
}
console.log(md.methodOne());