事情是这样的。我有一个名为 A 的主课。
我希望这个班级能够扩展 B 级。
class A extends B {}
但事实上,我希望 B 类在特定条件下扩展 C、D 或 E:
class B extends B1 {}
or
class B extends B2 {}
or
class B extends B3 {}
因此,B 类将是一个“假”类,只是为了检查条件然后扩展正确的类。
在决赛中,结果将与以下相同:
class A extends B1 {}
or
class A extends B2 {}
or
class A extends B3 {}
我知道这在 PHP 中是可能的,例如使用抽象类或包装类。
但是如何在 JavaScript ES6 中做到这一点呢?
Thanks
奇怪,但可能:
class subClassFirst {
report() {
console.log(`Extended ${this.name} from the first class`);
}
}
class subClassSecond {
report() {
console.log(`Extended ${this.name} from the second class`);
}
}
class subClassThird {
report() {
console.log(`Extended ${this.name} from the third class`);
}
}
function classCreator(condition) {
let sub;
switch (condition) {
case 'first':
sub = subClassFirst;
break;
case 'second':
sub = subClassSecond;
break;
case 'third':
sub = subClassThird;
break;
}
return (class extends sub {
constructor(name) {
super();
this.name = name;
}
});
}
let myClass;
myClass = classCreator('first');
let mcf = new myClass('f');
myClass = classCreator('second');
let mcs = new myClass('s');
myClass = classCreator('third');
let mct = new myClass('t');
mcf.report();
mcs.report();
mct.report();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)