JavaScript类“ this”未定义

时间:2019-10-14 21:21:33

标签: javascript es6-promise

我是JavaScript的新手,我想知道为什么以下内容在validateThisScenario中引发错误,以及如何使它在相似的结构中工作。

class TestClass {
  // ...

  getResponse() {
    return this._response
  }

  validateThisScenario() {
    const response = this.getResponse() // TypeError: Cannot read property 'getResponse' of undefined
  }

  test1() {
    return this.test(this.validateThisScenario)
  }

  test(validation) {
  return Promise.resolve()
    .then(() => validation())
    .catch((err => {
        // ...
    }))
  }
}

1 个答案:

答案 0 :(得分:-1)

this关键字引用该类的实例。因此,您需要一个类的实例才能调用该方法。例外情况是方法为static

假设您有一个这样的课程:

class TestClass {
  doSomething() {
    console.log("Did something");
  }
}

要调用doSomething方法,您首先需要一个实例。即

var instanceOfTestClass = new TestClass();
instanceOfTestClass.doSomething();    // OK

如果您不想创建实例,则需要一个静态方法

class TestClass {
  static doSomething() {
    console.log("Did something");
  }
}

那么这是允许的:

TestClass.doSomething();  // OK