Javascript ES6-使用基类的参数调用回调
我试图将公共功能封装在基类中,并计划从它们各自的实例调用派生类特定的函数。不知何故,我并没有在派生类中获取参数。不确定这里出了什么问题-Javascript ES6-使用基类的参数调用回调,javascript,ecmascript-6,es6-class,Javascript,Ecmascript 6,Es6 Class,我试图将公共功能封装在基类中,并计划从它们各自的实例调用派生类特定的函数。不知何故,我并没有在派生类中获取参数。不确定这里出了什么问题- class A { constructor(callback){ this.callback = callback; } write(){ console.log('Writing A'); this.callback(10); } } class B extends A { constructo
class A {
constructor(callback){
this.callback = callback;
}
write(){
console.log('Writing A');
this.callback(10);
}
}
class B extends A {
constructor(){
super(()=> this.read())
}
read(n){
console.log('Read B: ' + n);
}
}
const b = new B();
b.write();
输出
"Writing A"
"Read B: undefined"
然而,我希望-
"Writing A"
"Read B: 10"
你有
super(()=> this.read())
回调不接受任何参数,也不向this.read传递任何内容,因此10
会丢失
确保回调采用所需参数并传递它
A类{
构造函数(回调){
this.callback=回调;
}
写(){
console.log('writinga');
这是回调(10);
}
}
B类扩展了A类{
构造函数(){
super((n)=>此。读取(n))
}
读(n){
console.log('Read B:'+n);
}
}
常数b=新的b();
b、 write()代码>或者,您可以传递参数,而不必考虑转发参数:
super(this.read.bind(this));
我确实试过super(()=>this.read(n))
但是super(**(n)**=>this.read(n))
就是这个窍门。你抓住我了。谢谢大家!@Codie请将此帖子标记为答案,以避免其他人来此尝试解决已经解决的问题。问候语。