javascript - 调用类构造函数来模拟 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
}
...这似乎工作正常。但我觉得这更像是一种黑客攻击。
有没有更好的方法来做到这一点?
解决方案
推荐阅读
- python - TypeError:无法为列构建 TypeSpec
- android - 从 Firestore 中删除最后一个元素时,如何使 case REMOVED 触发?
- python - 如何使用 Matplotlib 显示折线图的阴影?
- unity3d - Unity3D 如何通过拖动和选择/套索选择以 3D 方式选择多个对象?
- python - QStandardItemModel 不会在 QTreeView InternalMove 上发出 rowsMoved() 信号
- java - 为没有参数的乘法创建递归算法
- arrays - 如何通过角度材料中的特定数字迭代图标
- spring - 管理 Spring Boot 应用程序的构建配置文件/配置
- python - 如何将字符串转换为pyspark中的数组数组?
- reactjs - 为什么当我使用 axios 将数据发布到我的 mongodb 云时,我得到了一个带有 _id 和空字段的对象?