 
			
				18.01.2019, 00:54
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 08.06.2015 
					
					
					
						Сообщений: 206
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Будет ли каждый раз при переборе массива создание новой функции?
			 
			
		
		
		
		Будет ли во втором случае функция cube  создаваться каждый раз во время перебора массива через map? В первом случае, как я понимаю, в возвращаемом объекте просто дается ссылка на функцию. 
Случай 1:
 
function cube(x){ return x**3 };
var arr=[ 1, 2, 3, 4, 5 ];
arr=arr.map(i=>({ cube, value: i }));
Случай 2:
 
var arr=[ 1, 2, 3, 4, 5 ];
arr=arr.map(i=>({ cube(x){ return x**3 }, value: i }));
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Teamur, 18.01.2019 в 11:57.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.01.2019, 09:35
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.12.2012 
					
					
					
						Сообщений: 3,841
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Teamur, 
 
function cube(x){ return x**3 };
var arr=[ 1, 2, 3, 4, 5 ];
arr=arr.map(i=>({ cube, value: i }));
alert(arr[0].cube===arr[1].cube);
var cube=x=>x**3;
var arr=[ 1, 2, 3, 4, 5 ];
arr=arr.map(i=>({ cube(x){ return x**3 }, value: i }));
alert(arr[0].cube===arr[1].cube);
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.01.2019, 11:45
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 08.06.2015 
					
					
					
						Сообщений: 206
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Nexus, 
 Спасибо.
 
Вопрос 1: 
Объект obj будет создаваться каждый раз при запуске функции x? 
А если объект расположить в глобальном пространстве window, то при обращении к переменной obj, JS-движок будет перебирать миллион свойств объекта window пока не найдет obj?
 
function x(){
  let obj={
    lorem:1,
    ipsum:2,
    dolor:3,
  };
}
Вопрос 2: 
Если в объекте сотни свойств, имеет ли значение близость имени свойства к началу алфавита с точки зрения поиска свойства, когда мы обращаемся к свойству через obj[prop]? Скажем у меня есть DOM-элемент и я записываю в него свойство нап. el.a=5, JS-движок его же быстрее найдет среди сотни нативных свойств элемента, чем если бы свойство начиналось на букву z?
 
К чему всё это? Я считаю что лучше ссылаться на что-то или присваивать, чем создавать заново, верно )  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Teamur, 18.01.2019 в 11:51.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.01.2019, 13:56
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.10.2016 
					
					
					
						Сообщений: 1,013
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Teamur
			
		
	 | 
 
	
		Вопрос 1: 
Объект obj будет создаваться каждый раз при запуске функции x? 
function x(){
  let obj={
    lorem:1,
    ipsum:2,
    dolor:3,
  };
}
	 | 
 
	
 
 да
 
	
 
	| 
		
			Сообщение от Teamur
			
		
	 | 
 
	| 
		А если объект расположить в глобальном пространстве window, то при обращении к переменной obj, JS-движок будет перебирать миллион свойств объекта window пока не найдет obj?
	 | 
 
	
 
 там не будет никакого перебора свойств, максимум бинарный поиск, если оно внутри реализовано как дерево. Короче, быстро находится.
 
вообще если надо постоянный объект иметь, то всё делается через замыкание
 
var x = (function() {
    var obj = {...};  // объект живет постоянно, используется в функции, не виден снаружи
    return function () {... obj ...};
})();
	
 
	| 
		
			Сообщение от Teamur
			
		
	 | 
 
	
		Вопрос 2: 
Если в объекте сотни свойств, имеет ли значение близость имени свойства к началу алфавита с точки зрения поиска свойства, когда мы обращаемся к свойству через obj[prop]? Скажем у меня есть DOM-элемент и я записываю в него свойство нап. el.a=5, JS-движок его же быстрее найдет среди сотни нативных свойств элемента, чем если бы свойство начиналось на букву z?
	 | 
 
	
 
 как уже говорил, перебора нет, к алфавиту ничего не привязано. Хочешь микрооптимизаций - просто делай имена свойств короче, хотя это мало что дает.
 
в общем виде объект хранится как карта (ключ, значение). Внутри это может быть дерево или хэш-таблица. 
если набор свойств не меняется, то под твой объект создается специальный "внутренний класс", поступ по именам свойств ещё быстрее.
 
	
 
	| 
		
			Сообщение от Teamur
			
		
	 | 
 
	| 
		К чему всё это? Я считаю что лучше ссылаться на что-то или присваивать, чем создавать заново, верно )
	 | 
 
	
 
 в общем да, временные объекты это мусор, они заставляют сборку мусора чаще запускаться.
 
но вообще тут тоже всё не так просто. 
 https://habr.com/ru/company/oleg-bunin/blog/433318/ 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.01.2019, 14:06
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 08.06.2015 
					
					
					
						Сообщений: 206
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Alexandroppolus, 
Обалденно всё расписал, Спасибо! 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |