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