LINUX.ORG.RU

Создание объектов «на лету».

 


0

1

Товарищи, может есть какой-то способ создавать многоуровневые объекты на лету?
То есть в Perl я просто пишу -

$hash{$k_lvl1}{$k_lvl2}{$k_lvl3}=$val;
и не забочусь о том, были ли к настоящему моменту готовы все уровни.
В js мне приходится делать страшное (в существовании _GLOBALS я уверен):
if (!_GLOBALS.cache) _GLOBALS.cache={templates: {qtypes_general: 1}};
else if (!_GLOBALS.cache.templates) _GLOBALS.cache.templates={qtypes_general: 1};
else if (!_GLOBALS.cache.templates.qtypes_general) _GLOBALS.cache.templates.qtypes_general=1;
А если у меня не три, а десять уровней? Могу я как-то упростить себе жизнь?

★★★★★
Ответ на: комментарий от punya

http://jsperf.com/zepto-vs-jquery-2013/7

писец, просто писец, леденящий душу. У меня native выдает 8 лимонов против примерно одинаковых 300 у zepto и jquery. Это же больше порядка!

btw, печально, что нету IE. Так бы я заюзал.

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs
$('#chapter_004')
document.getElementById('chapter_004')

тебе выдает разницу на парсинг селектора. парсинг селекторов - константа. пренебрегаем

punya ★★
()
Последнее исправление: punya (всего исправлений: 1)
Ответ на: комментарий от punya

кстати, с точки зрения правильной практики, что лучше - стараться вначале сохранять найденное селектором в переменную и потом использовать уже ее, или сейчас уже нормальным считается каждый раз дергать селектор заново? jQuery можно как-нибудь сказать, что оно монопольно владеет изменением DOMа, и поэтому может автоматически использовать закэшированные данные с предыдущего вызова селектора?

постоянно вижу, что люди дергают селекторы каждый раз заново, но это выглядит несколько.. неправильным что ли. По-умолчанию jquery откуда может знать, что монопольно используется для модификаций? Значит кэшировать не должно, значит всё должно тормозить

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

джкваери сам не кэширует канешн. все правильно говоришь

punya ★★
()
Ответ на: комментарий от punya

оффтоп

А потом мне люди говорят, что операции с DOM в Опере медленные были… лучший жабаскрипт — отсутствие жабаскрипта %)

Deleted
()
Ответ на: комментарий от stevejobs

Я что-то не понял. Что ещё за .data('title'), когда должен быть .attr('data-title'), а в коде атрибут вообще называется «data-view-title»?

Xellos ★★★★★
() автор топика
Ответ на: комментарий от Xellos

.data() это интерфейс к data-* атрибутам.

В DOM тоже есть свой, но в старых браузерах это не работает (а чтение атрибутов таки работает, естественно). В общем, людям-стандартотворцам зачем-то захотелось чтобы вот так вот ещё было можно.

https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dataset

anonymous
()
Ответ на: комментарий от anonymous

.data() давно не интерфейс к атрибутам. Это хитровы...ная хреновина, которая где-то далеко в объекте сохраняет произвольные данные. Не удивлюсь, если сериализованные.

Xellos ★★★★★
() автор топика
Ответ на: комментарий от Kalashnikov

Так и я об этом. Причём берут атрибут «data-title», в то время как он называется «data-view-title».

Xellos ★★★★★
() автор топика
Ответ на: комментарий от stevejobs

Ну хорошо. Jquery делает ВСЕГО ЛИШЬ 650000 выборок в секунду. Я понимаю, это непозволительно мало.

Xellos ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.