在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 在评论中提到的,您似乎想要的模式是组合,而不是继承。
我有一个 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 在评论中提到的,您似乎想要的模式是组合,而不是继承。