Javascript 在超类中获取子类构造函数

Javascript 在超类中获取子类构造函数,javascript,Javascript,这段代码按预期工作,但是如果不在每个子类中设置myConstructor,我如何编写此类新代码呢?好吧,我不知道目标是什么,但要回答您的问题: var Super = function() {} Super.prototype.newOfThisKind = function() { return new this.myConstructor() } var Sub1 = function() { this.myConstructor = Sub1 } var Sub2 = functi

这段代码按预期工作,但是如果不在每个子类中设置myConstructor,我如何编写此类新代码呢?

好吧,我不知道目标是什么,但要回答您的问题:

var Super = function() {}
Super.prototype.newOfThisKind = function() {
    return new this.myConstructor()
}
var Sub1 = function() { this.myConstructor = Sub1 }
var Sub2 = function() { this.myConstructor = Sub2 }
Sub1.prototype = new Super()
Sub2.prototype = new Super()
console.assert(new Sub1().newOfThisKind() instanceof Sub1)
console.assert(new Sub2().newOfThisKind() instanceof Sub2)

我认为这是不可能的。但你为什么需要它呢?如果只是为了触发一些动作,那就创建第二个方法。我不知道你的意思。我们的目标是在任何超级实例上使用这种类型的newof。
    var Super = function () { }
    Super.prototype.newOfThisKind = function () {
        return Object.create(this);
    }
    var Sub1 = function () { }
    var Sub2 = function () { }
    Sub1.prototype = new Super()
    Sub2.prototype = new Super()
    console.assert(new Sub1().newOfThisKind() instanceof Sub1)
    console.assert(new Sub2().newOfThisKind() instanceof Sub2)