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(){
};
|
Цитата:
|
ты создаешь новый инстанс модуля тип) типа не прост функция какая то а обьект возвращает, и это модуль, у меня так, у тя не?
или ты сразу думаешь раз new значит есть какой-то класс? и что же это за класс? - да? |
Цитата:
Но скоро мы получим православный встроенный синтаксис модулей и всё будет хорошо! |
...
|
Цитата:
Цитата:
function Base() {
this.sub = new Sub();
}
Base.prototype.sub = null;
function Sub() {
}
Base содержит в себя Sub и можете делегировать ему свои обязанности, а фабрикой - это вообще из другой оперы.
function Base() {
this.sub = new Sub();
}
Base.prototype.sub = null;
Base.prototype.foo = function () {
return this.sub.foo();
};
function Sub() {
}
Sub.prototype.foo = function () { alert('foo!'); }
new Base().foo();
|
...
|
Цитата:
|
Цитата:
Цитата:
|
kobezzza, вот я о том и говорю, тут 1-3 человека включая тебя и меня которые шарят. при чем я самый хучший из этих троих.
Вот я например например поржал когда он про фабрику пошутил, а все бы подумали что я дурак и тупой и это рельно фабрика и что он не шутил =) вот такой тут народец kobezzza, кстати , а в твоем примере если бы Sub должен был бы знать что-то о Base, то это означало бы что мы делаем что-то не правильно? (Так как в данном случае Subы не должны ни чего знать о Base) |
Цитата:
|
но забываем о них чтобы не было запутанно ;)
Верно ли я понял что ты в таком случае предлагаешь делать Sub EventEmitter'ом и сувать в него какие-то калбаки от Base? |
Цитата:
|
лол, раз заговорили o FRP решил добавить скоупу новый метод "ячейка"
![]() я думаю не надо обьяснять чо он делает ^__^ |
Я считаю что такие вещи лучше либо выносить в подъязыки, вроде Кложуры, там это всё выглядит гораздо сахарней и нагляднее, нежели инлайн-строки
Насчёт твоего примера: возможна проблема невозможности сжатия скрипта из-за сильного использования строковых сущностей (свойство w и формула, которая может быть не корректной, т.к. свойство q сожмётся), но если забить на это, то норм, но лучше тогда свойства декларировать как "экспортные" или использовать подъязыки (как я писал выше), которые предварительно транслируются на этапе сборки. |
неее, чувак, ты не понял, во первых это сахар и внутри это выражене все ровно превратится в функцию)
ни кто не мешает написать и так: ![]() это по сути обычный сахар на геттер =) (да у меня будут геттеры так как не смотря на потенциальную возможность поддержки ишаков я не собираюсь ограничиваться из за них ДАЖЕ В ТАКОЙ МЕЛОЧИ) |
Цитата:
Цитата:
Я кстати юзаю встроенные setter/getter-ы - оч удобно, а Ишак древний пусть катится в попу:) Там ради одно flex в CSS уже можно забить на все кроме 11-й версии:D |
В ПРИНЦИПЕ я могу замутить так, а потом контроллеры прогонять через свой мини транслятор на лету =) как идея?
И сжимается, и вообще красота ^_^ ![]() Правда если есть переменная с именем q то она сожмется неверно, и тогда человеку придется писать не сахарно а руками функцию написать туда. но это мелочи. |
Цитата:
Лучше юзать красивые, стильные и молодёжные Arrow Function :) Я бы на твоём месте забил на инлайн синтаксис, ибо в данном контексте это скорее антифича, т.к. в реальной жизни её мало кто будет юзать из-за целого пласта проблем при сжатии. |
Цитата:
Еще раз, спасибо. |
Почему не делать так, хоть один минус?
1) так ни кто СЛУЧАЙНО не делает 2) синтаксически правильно 3) красиво 4) очевидно ![]() Цитата:
|
Цитата:
|
ДА БЛИН, кто использует такое ПУСТЬ НЕ ИСПОЛЬЗУЕТ GGC или каменты оставляет.
ты посмотри какая красота ^__^ ![]() чертов GGC
function Ctrl(a){a.q="fdf";a.w={name:a.q,age:1}};
Я все таки думаю плохая сжимаемость GGC это проблема скорее GGC и того кто его использует, а не UI. Я сделаю эту фитчу. |
Цитата:
$scope.export = {
set w(v) { $scope.c += v; }
};
где export - это сеттер, т.е.
$scope = {
set export(v) { ... }
};
Сжимается, коротко, красиво |
сделай ка мне на сеттерах вот такую форму ;)
![]() |
$scope.export = {
formData: {
set name(v) { ... },
set pass(v) { ... },
set date(v) { ... }
}
};
Ну а ваще дело твоё, я просто сказал о возможных проблемах) Лан я спать, удачи. |
окей, теперь сравни с:
![]() добавил фитчу со знаком бакса =) выглядит как вызов функции, правда? А по скольку мы знаем что неймспейс $ в UI служебный то проблем не будет =) |
Цитата:
|
Да царское же решение, признай =)!!!
А по скольку мы знаем что неймспейс $ в UI служебный то проблем не будет |
Ну попробуй)
|
всегда актуальная дата
![]() напомню что рендерится все изменившееся по анимейшенФрейму так что с производительностью все норм =) щас запилю. |
| Часовой пояс GMT +3, время: 22:57. |