首页 > 解决方案 > 调用类构造函数来模拟 javascript 中的多态性

问题描述

这可能是重复的,但我没有找到任何东西。

基本上我有这个(过度简化的)代码:

class A {
  doSomething() {
    return new A();
  }
}

class B extends A {
  doSomething() {
    return new B();
  }
}

const a = new A().doSomething() // a should be an instance of A
const b = new B().doSomething() // b should be an instance of B

在这里,doSomething除了返回的实例的类型(我试图拥有不可变的实例)之外,在两个类中都做了完全相同的事情。

所以我所做的就是修改代码如下:

class A {
  doSomething() {
    return this.constructor();
  }
}

class B extends A {
  // nothing
}

...这似乎工作正常。但我觉得这更像是一种黑客攻击。

有没有更好的方法来做到这一点?

标签: javascriptpolymorphism

解决方案


推荐阅读