B.prototype.__proto__ = C.prototype
这似乎是正确的答案。
但仍然
it shouldn't be used
这是演示
class A {
f(){
console.log("I am a A")
}
}
class B extends A {}
class C {
f(){
console.log("I am a C")
}
}
// ----- test B -----
new B().f() // "I am a A";
console.log("B is an A: " + (new B instanceof A));
console.log("B is an C: " + (new B instanceof C));
// ------- CHANGE ------
console.log("Changing B's parent class to C !");
B.prototype.__proto__ = C.prototype;
// ------- retest -------
new B().f() // "I am a C";
console.log("B is an A: " + (new B instanceof A));
console.log("B is an C: " + (new B instanceof C));