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