从同一个类中的另一个方法调用方法

ste*_*e-o 19 javascript ecmascript-6

为什么我收到错误:"未捕获TypeError:self.myTest不是函数"?如何从javascript类中的另一个方法中调用方法?

class MyClass {

    myTest() {
      console.log('it works');
    }

    runMyTest() {
      self.myTest();
    }

}

var myClass = new MyClass();
myClass.runMyTest();
Run Code Online (Sandbox Code Playgroud)

Tob*_*lor 21

您需要使用this关键字而不是self.

runMyTest() {
    this.myTest();
}
Run Code Online (Sandbox Code Playgroud)


edi*_*edi 9

你需要使用thisself喜欢

runMyTest() {
  this.myTest();
}
Run Code Online (Sandbox Code Playgroud)

然而,许多实现都喜欢保留引用并执行以下操作:

var self = this;
Run Code Online (Sandbox Code Playgroud)

这可能是你被认为self是自我参照的原因.为了进一步阅读,我建议这个SO - 帖子


Rah*_*raj 5

class MyClass {

 myTest() {
  console.log('it works');
 }

 runMyTest = ()=>{
  this.myTest();  
 }

 runMyTest2 = function(){
  this.myTest(); 
 }
}

var myClass = new MyClass();
myClass.runMyTest();
myClass.runMyTest2();
Run Code Online (Sandbox Code Playgroud)

使用箭头函数将 this 绑定到全局对象。为了表示对象属性,我们必须使用函数

 let user = {
    name :"Something"
 }

 user.value = ()=>{
   console.log(this)
 }

 user.value2 = function(){
   console.log(this)
 }

   user.value(); ///returns this for windows
   user.value2(); ///returns object user  
Run Code Online (Sandbox Code Playgroud)