Будет ли каждый раз при переборе массива создание новой функции?
Будет ли во втором случае функция 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, время: 19:53. |