kobezzza, да у меня сейчас так практически и есть - я создавал копии уже определенных объектов и атрибутов в цикле. Именно это мне не нравилось, а варианта кроме переноса огромного куска кода внутрь конструктора не видел, но походу это лучший выход. Спасибо.
|
Цитата:
|
Цитата:
ну короче как-то так:
function Cat(fullname, age) {
age = age || 0;
fullname = fullname || '';
var reg = /\w+/img;
var name = fullname.match(reg)[0];
var soname = fullname.match(reg)[1];
this.soname = soname;
this.name = name;
this.age = age;
this.startTimer(1000);
}
Cat.prototype.startTimer = function(time) {
setInterval(this.say.bind(this), time);
};
Cat.prototype.say = function() {
alert(this.name);
};
|
...
|
Цитата:
![]() Нет, это фассад. |
jsru_,
Основной минус такого подхода в том что Sub() описана как глобальная функция, и теряется вся красота и логика кода - попробуйте из описания угадать где оно используется?. А вот маленькие фабрики использовать, отнюдь, не грех, само просится, мануфактура, так сказать. |
Цитата:
http://dmitrysoshnikov.com/ecmascrip.../#kompozitsiya А "фабрикой" называется функция, которая порождает новые объекты (без явного вызова конструктора и оператора new), например функция Object в JS является фабрикой:
alert(Object(1) instanceof Number);
alert(Object('foo') instanceof String);
|
Цитата:
|
Цитата:
var Base = (function () {
function Sub() {
}
function Base() {
}
return Base;
})();
Это простейший вариант. Наружу выйдет только Base. |
почему ты не пишешь так? круче же смотрится, да и логичнее.
var Module = new function(){
};
|
| Часовой пояс GMT +3, время: 15:35. |