这个问题在这里已有答案:
我想从基类中的静态方法创建子类的实例
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
的一个实例
是否有可能在节点JS中实现这一点?
从子类中调用find
时,this
中的find
将引用该子类,因此您可以从return new 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);