Javascript - 如何更改类的父类?

标签 javascript class inheritance

假设我们有 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

这似乎是正确答案。
但还是 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));

关于Javascript - 如何更改类的父类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51823432/

相关文章:

java - 福勒的模式 : Dealing with table inheritance in a specific way

java - 父类(super class)和子类参数

javascript - 如何使用 Handlebars 将输入名称属性设置为等于变量?

javascript - 如何制作 jQuery UI 可放置列表,其中添加到列表中的元素也是放置目标

javascript - .hover 不适用于我动态分配类的元素

c++ - 无法访问模板基类中的变量

javascript - 为什么这个 forEach 在使用 return 语句时返回 undefined

javascript - 使用动态内容动态复制 div

c++ - 对象可能修改的函数

c++ - 添加用户定义类型 C++