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

问题描述 投票:0回答:1

这个问题在这里已有答案:

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

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)返回一个FirstChildSecondChild.find(1)的实例来返回SecondChild的一个实例

是否有可能在节点JS中实现这一点?

javascript node.js inheritance base-class
1个回答
2
投票

从子类中调用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);
© www.soinside.com 2019 - 2024. All rights reserved.