在JavaScript中声明一个新的子类作为原型方法可以吗?

Is it okay to declare a new subclass as a prototype method in JavaScript?

我有一个 class,其中有一些嵌套的子 class,但我不确定正确的语法应该是什么。这就是我想做的。它运行良好,但可能不是最佳编码实践。

function AClass() {
    this.myB = new BClass();
}

AClass.prototype.BClass() {
    this.myC = new CClass();
}

AClass.prototype.BClass.prototype.CClass() {
    // C constructor
}

如果您的嵌套 class 仅与主 class 一起使用,您可以将它们定义为主 class 的(静态)属性。没有理由让它们在每个实例上都可用。

function MainClass() {
    this.myB = new MainClass.SubClassB();
}

MainClass.SubClassB = function() {
    this.myC = new MainClass.SubClassC();
}

MainClass.SubClassC = function() {
    // C constructor
}

MainClass.SubClassC.prototype.sayHi = function(){ 
    console.log('Hi from C');
}


var myInstance = new MainClass();
myInstance.myB.myC.sayHi();

*) 注意嵌套的classes和你的mainclass没有继承关系。正如@squint 在评论中提到的,您似乎想要的模式是组合,而不是继承。