对象内的javascript函数未定义

时间:2018-11-16 14:25:19

标签: javascript ecmascript-6

const md = {
  methodOne: () => {
    console.log(this.anotherMethod())
  },
  anotherMethod: () => 'anotherMethod'
}

当我做md.methodOne()时,我得到了anotherMethod是未定义的错误。如何在anotherMethod中呼叫methodOne

1 个答案:

答案 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());