我有三个班,其中两个扩展第三班。有可能以某种方式(不同于手动)将扩展类的名称分配给超级构造函数吗?
class Master {
constructor(options) {
this.methods = Object.getOwnPropertyNames( Master.prototype );
}
getMethods() {
return Object.getOwnPropertyNames( Master.prototype );
}
}
class SlaveOne extends Master {
constructor(options) {
super(options);
}
methodOne() {}
methodTwo() {}
}
class SlaveTwo extends Master {
constructor(options) {
super(options);
}
methodThree() {}
methodFour() {}
}
所以,我想要的是在Master类中使用方法或this.methods
赋值,这将:
['constructor', 'methodOne', 'methodTwo']
; SlaveOne
['constructor', 'methodThree', 'methodFour']
; SlaveTwo
在['constructor', 'getMethods']
,SlaveOne
或SlaveTwo
的实例上调用时,我当前的代码将返回相同的Master
。有什么想法吗?
答案 0 :(得分:1)
这样的事情可以解决问题
class Master {
getMethods() {
return Object.getOwnPropertyNames( this.constructor.prototype );
}
}
class SlaveOne extends Master {
constructor(options) {
super(options);
}
methodOne() {}
methodTwo() {}
}
class SlaveTwo extends Master {
constructor(options) {
super(options);
}
methodThree() {}
methodFour() {}
}
console.log(new SlaveOne().getMethods(), new SlaveTwo().getMethods())