Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Объект внутри прототипа (https://javascript.ru/forum/misc/43350-obekt-vnutri-prototipa.html)

StSpirit 02.12.2013 21:01

kobezzza, да у меня сейчас так практически и есть - я создавал копии уже определенных объектов и атрибутов в цикле. Именно это мне не нравилось, а варианта кроме переноса огромного куска кода внутрь конструктора не видел, но походу это лучший выход. Спасибо.

Maxmaxmaximus3 02.12.2013 21:15

Цитата:

Сообщение от StSpirit
мне действительно не нравится внутри конструктора создавать новые инстансы

почему? какие недостатки?

Maxmaxmaximus3 02.12.2013 21:22

Цитата:

Сообщение от 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);
};

jsru_ 02.12.2013 21:37

...

Maxmaxmaximus3 02.12.2013 21:41

Цитата:

Сообщение от jsru_
Мне кажется ты путаешь. это скорее фабрика, причем упрощенная



Нет, это фассад.

StSpirit 02.12.2013 21:53

jsru_,
Основной минус такого подхода в том что Sub() описана как глобальная функция, и теряется вся красота и логика кода - попробуйте из описания угадать где оно используется?. А вот маленькие фабрики использовать, отнюдь, не грех, само просится, мануфактура, так сказать.

kobezzza 02.12.2013 21:59

Цитата:

Сообщение от jsru_ (Сообщение 284122)
Мне кажется ты путаешь. это скорее фабрика, причем упрощенная

Это ты путаешь:)
http://dmitrysoshnikov.com/ecmascrip.../#kompozitsiya

А "фабрикой" называется функция, которая порождает новые объекты (без явного вызова конструктора и оператора new), например функция Object в JS является фабрикой:

alert(Object(1) instanceof Number);
alert(Object('foo') instanceof String);

Maxmaxmaximus3 02.12.2013 22:04

Цитата:

Сообщение от kobezzza
Это ты путаешь

он не путает он просто не знает, а то что второй 20 лет прогарммированием занимается я тоже сомневаюсь) при чем сиильно

kobezzza 02.12.2013 22:14

Цитата:

Сообщение от StSpirit (Сообщение 284125)
jsru_,
Основной минус такого подхода в том что Sub() описана как глобальная функция, и теряется вся красота и логика кода - попробуйте из описания угадать где оно используется?. А вот маленькие фабрики использовать, отнюдь, не грех, само просится, мануфактура, так сказать.

Ну опиши её в модуле:

var Base = (function () {
    function Sub() {
    }

    function Base() {
    }

    return Base;
})();


Это простейший вариант. Наружу выйдет только Base.

Maxmaxmaximus3 02.12.2013 22:18

почему ты не пишешь так? круче же смотрится, да и логичнее.

var Module = new function(){


};


Часовой пояс GMT +3, время: 10:51.