JS OOP:从父方法访问后代的构造函数

时间:2018-05-30 06:33:57

标签: javascript class

我有下一堂课:

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的实例

问题:可以通过静态上下文从父类访问子类或原型或构造函数,以便将方法用作工厂。

1 个答案:

答案 0 :(得分:1)

this中的fromObject会对你调用的任何其他函数(除了执行上下文绑定的箭头函数除外)引用它所调用的对象,所以在你的情况下,它会是CustomType1CustomType2CustomType1CustomType2是这些类的构造函数

class Type {
 static fromObject(obj = {}) {
    return new this(obj.a, obj.b)
  }
}