从初始化类调用类函数的Javascript

从初始化类调用类函数的Javascript,javascript,Javascript,我可以从初始化的类调用类函数,但我不能显示类属性的值 class A { constructor() { this.myvariable = "value"; let b = new B(this.myCallback); } myCallback() { console.log(`myCallback() => ${this.myvariable}`); } } class B { constructor(cb) {

我可以从初始化的类调用类函数,但我不能显示类属性的值

class A {
  constructor() {
    this.myvariable = "value";
    let b = new B(this.myCallback);
  }

  myCallback() {
    console.log(`myCallback() => ${this.myvariable}`);
  }
}

class B {
  constructor(cb) {
    cb();
  }
}

var a = new A();

我需要从
class B
调用
class A
方法。当我执行上述操作时,console将
this.myvariable
打印为未定义。

myCallback
失去其上下文时,您需要将
myCallback
显式绑定到
class A
实例的上下文

如果没有
myCallback
中的上下文,
此.myvariable
将是未定义的:

A类{
构造函数(){
this.myvariable=“value”;
设b=newb(this.myCallback.bind(this));
}
myCallback(){
log(`myCallback()=>${this.myvariable}`);
}
}
B类{
建造师(cb){
cb();
}
}

var a=新的a()
myCallback
失去其上下文时,您需要将
myCallback
显式绑定到
class A
实例的上下文

如果没有
myCallback
中的上下文,
此.myvariable
将是未定义的:

A类{
构造函数(){
this.myvariable=“value”;
设b=newb(this.myCallback.bind(this));
}
myCallback(){
log(`myCallback()=>${this.myvariable}`);
}
}
B类{
建造师(cb){
cb();
}
}

var a=新的a()正如另一个答案清楚地解释了实际发生的情况,这里只提供一个替代方法来实现这一点,因为箭头函数不绑定自己的函数,而是从父作用域继承该函数,我们也可以这样做:

A类{
构造函数(){
this.myvariable=“value”;
设b=newb(this.myCallback);
}
myCallback=()=>{
log(`myCallback()=>${this.myvariable}`);
}
}
B类{
建造师(cb){
cb();
}
}

var a=新的a()正如另一个答案清楚地解释了实际发生的情况,这里只提供一个替代方法来实现这一点,因为箭头函数不绑定自己的函数,而是从父作用域继承该函数,我们也可以这样做:

A类{
构造函数(){
this.myvariable=“value”;
设b=newb(this.myCallback);
}
myCallback=()=>{
log(`myCallback()=>${this.myvariable}`);
}
}
B类{
建造师(cb){
cb();
}
}
var a=新的a()