在JavaScript中将新子类声明为原型方法是否可以?

时间:2015-05-18 14:57:49

标签: javascript prototype prototypejs

我有一个有几个嵌套子类的类,但我不确定正确的语法应该是什么。这就是我在想的事情。它效果很好,但也许它不是最好的编码实践。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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();

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