从初始化类调用类函数的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()代码>