Сообщение от StSpirit
|
Вы правильно меня поняли, мне действительно не нравится внутри конструктора создавать новые инстансы (даже не создавать, а описывать и создавать), когда, по идее, это можно было бы описать по другому. Вопрос закрыт.
|
Как вариант:
function Sub() {
}
function Sub2() {
}
function Base() {
for (var key in this.links) {
this[key] = new this.links[key]();
}
}
Base.prototype.links = {
sub: Sub,
sub2: Sub2
};
Это простейший вариант без "сахара", т.е. в прототипе мы декларируем какие должны быть свойства у инстантса, а затем в конструкторе вызываем "волшебный" метод, который всё делает. Во многих языках, вроде Java нормальная практика описывать свойства класса в отдельном файле XML в виде декларативной формы, для улучшения восприятия и поддержки, так что тут можно делать что вроде этого и это нормально.