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, время: 23:18. |