Пусть говорят, что у нас есть 3 класса
class A {}
class B extends A {}
class C {}
Есть ли возможность сделать B
продолжением C
вместо A
?
Таким образом, new B() instanceof C
будет true
.
А new B() instanceof A
будет false
.
B.prototype.__proto__ = C.prototype
Кажется, это правильный ответ.
Но все равно его не следует использовать.
Здесь демо
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 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));