Показать сообщение отдельно
  #17 (permalink)  
Старый 28.12.2011, 19:18
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от Livaanderiamarum
чем твой код лучше?
Тем, что там нет самоудаляющейся функции и используется более привычная большинству концепция самовызывающихся функций.
Сообщение от GuardCat
А «o» несёт какую-нибудь смысловую нагрузку?
В моём примере — нет. Оно написано так только для сохранения исходного стиля.
Сообщение от melky
B@rmaley.e><e так код труднее читать (минимум, только мне).
А увидев код вроде
var a = ({
 // сотни тысяч строк кода
Чем, Вы подумаете, будет a? Особенно если Вы программируете на JS пару месяцев и ещё не прочитали JavaScript Patterns Стефанова? Если (function () стало более-менее стандартным синтаксисом (и то постоянно появляются вопросы в духе "Что значит (function () {})") для самовызвающихся функций, то ({ … }) не столь сильно распространено (Хотелось бы увидеть примеры его использования в каких-нибудь приличных библиотеках или JS приложениях).

Далее: IDE. Если среда и догадается каким-нибудь образом о структуре создаваемого объекта (очевидно не в исходном случае, т.к. там понять, куда будет записан объект, без анализа графа потока управления вряд ли получится). А уж догадаться о том, что метод в любом случае будет удалён и, как результат, его не нужно подставлять в какой-нибудь автокомплит, ещё труднее.
Сообщение от melky
неужели так тяжела инициализация и удаление свойства у объекта?
Проблема не в их легкости / тяжёлости, а в том, что непонятно, зачем их объявлять вместе с объектом, если они не будут частью него. Если бы этот метод назывался clone и делал то, что должен делать исходя из названия, вопросов бы не было. Получился бы такой объект-прототип, копию которого всегда можно получить.
Ответить с цитированием