Будет ли каждый раз при переборе массива создание новой функции?
Будет ли во втором случае функция 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,
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);
|
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? К чему всё это? Я считаю что лучше ссылаться на что-то или присваивать, чем создавать заново, верно ) |
Цитата:
Цитата:
вообще если надо постоянный объект иметь, то всё делается через замыкание
var x = (function() {
var obj = {...}; // объект живет постоянно, используется в функции, не виден снаружи
return function () {... obj ...};
})();
Цитата:
в общем виде объект хранится как карта (ключ, значение). Внутри это может быть дерево или хэш-таблица. если набор свойств не меняется, то под твой объект создается специальный "внутренний класс", поступ по именам свойств ещё быстрее. Цитата:
но вообще тут тоже всё не так просто. https://habr.com/ru/company/oleg-bunin/blog/433318/ |
Alexandroppolus,
Обалденно всё расписал, Спасибо! |
| Часовой пояс GMT +3, время: 18:55. |