02.12.2013, 21:01
|
Интересующийся
|
|
Регистрация: 02.12.2013
Сообщений: 13
|
|
kobezzza, да у меня сейчас так практически и есть - я создавал копии уже определенных объектов и атрибутов в цикле. Именно это мне не нравилось, а варианта кроме переноса огромного куска кода внутрь конструктора не видел, но походу это лучший выход. Спасибо.
Последний раз редактировалось StSpirit, 02.12.2013 в 21:11.
|
|
02.12.2013, 21:15
|
Профессор
|
|
Регистрация: 18.11.2013
Сообщений: 275
|
|
Сообщение от StSpirit
|
мне действительно не нравится внутри конструктора создавать новые инстансы
|
почему? какие недостатки?
|
|
02.12.2013, 21:22
|
Профессор
|
|
Регистрация: 18.11.2013
Сообщений: 275
|
|
Сообщение от kobezzza
|
описывать свойства класса в отдельном файле XML в виде декларативной формы, для улучшения восприятия и поддержки
|
а у меня такой стиль, вначале парсим атрибуты, потом создаем переменные, оперируем с ними, и полученное засовываем в поля обьекта, после, вызываем всякие инициализационые функции:
ну короче как-то так:
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);
};
Последний раз редактировалось Maxmaxmaximus3, 02.12.2013 в 21:26.
|
|
02.12.2013, 21:37
|
|
Кандидат Javascript-наук
|
|
Регистрация: 09.04.2013
Сообщений: 149
|
|
...
Последний раз редактировалось jsru_, 03.12.2013 в 10:24.
|
|
02.12.2013, 21:41
|
Профессор
|
|
Регистрация: 18.11.2013
Сообщений: 275
|
|
Сообщение от jsru_
|
Мне кажется ты путаешь. это скорее фабрика, причем упрощенная
|
Нет, это фассад.
|
|
02.12.2013, 21:53
|
Интересующийся
|
|
Регистрация: 02.12.2013
Сообщений: 13
|
|
jsru_,
Основной минус такого подхода в том что Sub() описана как глобальная функция, и теряется вся красота и логика кода - попробуйте из описания угадать где оно используется?. А вот маленькие фабрики использовать, отнюдь, не грех, само просится, мануфактура, так сказать.
Последний раз редактировалось StSpirit, 02.12.2013 в 21:56.
|
|
02.12.2013, 21:59
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от jsru_
|
Мне кажется ты путаешь. это скорее фабрика, причем упрощенная
|
Это ты путаешь
http://dmitrysoshnikov.com/ecmascrip.../#kompozitsiya
А "фабрикой" называется функция, которая порождает новые объекты (без явного вызова конструктора и оператора new), например функция Object в JS является фабрикой:
alert(Object(1) instanceof Number);
alert(Object('foo') instanceof String);
Последний раз редактировалось kobezzza, 02.12.2013 в 22:18.
|
|
02.12.2013, 22:04
|
Профессор
|
|
Регистрация: 18.11.2013
Сообщений: 275
|
|
Сообщение от kobezzza
|
Это ты путаешь
|
он не путает он просто не знает, а то что второй 20 лет прогарммированием занимается я тоже сомневаюсь) при чем сиильно
|
|
02.12.2013, 22:14
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от StSpirit
|
jsru_,
Основной минус такого подхода в том что Sub() описана как глобальная функция, и теряется вся красота и логика кода - попробуйте из описания угадать где оно используется?. А вот маленькие фабрики использовать, отнюдь, не грех, само просится, мануфактура, так сказать.
|
Ну опиши её в модуле:
var Base = (function () {
function Sub() {
}
function Base() {
}
return Base;
})();
Это простейший вариант. Наружу выйдет только Base.
|
|
02.12.2013, 22:18
|
Профессор
|
|
Регистрация: 18.11.2013
Сообщений: 275
|
|
почему ты не пишешь так? круче же смотрится, да и логичнее.
var Module = new function(){
};
|
|
|
|