JavaScript - Как изменить родительский класс класса?

1

Пусть говорят, что у нас есть 3 класса

class A {}
class B extends A {}
class C {}

Есть ли возможность сделать B продолжением C вместо A?

Таким образом, new B() instanceof C будет true.
А new B() instanceof A будет false.

  • 0
    динамически? нет
  • 0
    Жестокий мир :,(
Показать ещё 12 комментариев
Теги:
class
inheritance

1 ответ

0
Лучший ответ
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));
  • 0
    Это взлом, и вы не должны делать это, потому что он может сломаться без предупреждения. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
  • 0
    @ Леннхольм Большое спасибо за предупреждение. Тем не менее это правильное решение. Я добавлю ваше предупреждение к ответу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню