我有这种情况
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'函数中调用它。
答案 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();