我有下一堂课:
class Type {
static fromObject(obj = {}) {
return <new descendant object>
}
}
class CustomType1 extends Type {
constructor(a, b) {
this.a = a;
this.b = b;
}
}
class CustomType2 extends Type {
constructor(c, d) {
this.c = c;
this.d = d;
}
}
const t1 = CustomType1.fromObject({a:1, b:2})
const t2 = CustomType2.fromObject({c:3, d:4})
预期结果:t1是CustomType1的实例,t2是CustomType2的实例
问题:可以通过静态上下文从父类访问子类或原型或构造函数,以便将方法用作工厂。
答案 0 :(得分:1)
this
中的fromObject
会对你调用的任何其他函数(除了执行上下文绑定的箭头函数除外)引用它所调用的对象,所以在你的情况下,它会是CustomType1
和CustomType2
。 CustomType1
和CustomType2
是这些类的构造函数。
class Type {
static fromObject(obj = {}) {
return new this(obj.a, obj.b)
}
}