从nodejs中的回调函数调用调用类函数

时间:2018-05-03 07:23:16

标签: javascript node.js function oop

我有这种情况

class A {
  a(params) {
    //some code here
  }

  b(params) {
    //some code here
  }

  c(params) {
    this.a(function(data) {
      console.log(this);    // undefined
      this.b();             // error no function b of undefined
    }) 
  }
}

我尝试使用bind(this)将其绑定到'a',但是它表示无法读取未定义的属性'bind'或未定义此属性。当我打印这个时,我得到了A类。我想在'a'函数中调用它。

2 个答案:

答案 0 :(得分:3)

如果您定义了新的function,则this的含义会在其中发生变化。您需要使用箭头功能:

this.a((data) => {
  console.log(this); // class A
  this.b();
})

或将this的引用保存在局部变量中:

var self = this;

this.a(function(data){
  console.log(self); // class A
  self.b();
})

答案 1 :(得分:-1)

不确定您期待" b"方法执行。我已经在这里添加了jsFiddle:https://jsfiddle.net/k3jkobae/并且只是在我包装我的时候看到了正确的答案:)箭头函数最适合。

class A {
    a( callback ){
        console.log('a');
        callback();
    }

    b(params){
         console.log('b');
     }

    c(params) {
       this.a( () => this.b() ); 
    }
}

const myClass = new A();
myClass.c();