javascript - 是否可以从基类[node JS]中的静态方法实例化子类?

标签 javascript node.js inheritance base-class

我想从基类中的静态方法创建子类的实例

class Base {
  static find(id) {
    const attributes = database.get(id);
    return new getChildClass(attributes);
  }
}

class FirstChild extends Base {
}

class SecondChild extends Base {
}

我要FirstChild.find(1)返回 FirstChild 的实例和 SecondChild.find(1)返回 SecondChild 的实例

可以在 Node JS 中实现这一点吗?

最佳答案

当从子类调用find时,find内的this将引用该子类,因此您只需返回从 find 中新建此:

class Base {
  static find(id) {
    const attributes = 'foo'; // database.get(id);
    return new this(attributes);
  }
}

class FirstChild extends Base {
}

class SecondChild extends Base {
}

console.log(FirstChild.find(1) instanceof FirstChild);
console.log(SecondChild.find(1) instanceof SecondChild);

关于javascript - 是否可以从基类[node JS]中的静态方法实例化子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55347956/

相关文章:

javascript - 将 Express 应用程序传递到路线文件

python - 如何在多个存储库之间共享 Protocol Buffer .proto 文件

java - 在构造函数中,为什么在执行父类(super class)构造函数之前不能引用当前类的字段?

c# - 如何声明一个继承自另一个抽象类的抽象泛型类?

javascript - 使用 Iframe 在 Javascript 中打印 PDF 文件

javascript - 您如何知道 Snabbt 动画何时完成?

javascript - Angular 4 : Can't bind to 'ngForFor' since it isn't a known property of 'li'

javascript - 使用 Three.js 按顺序对立方体进行动画处理

node.js - 多边形内的 Mongoose 地理查询

android - 我想将上下文菜单应用于所有 Activity ,包括 listActivities 和 tabActivities