Переменая переменной или имя функции из строки
Изначально было так, с подозрением что сразу пошлют:
top_menu[i].addEventListener(sub_menu.dataset.event, 'menu_'+sub_menu.dataset.event, false); ну и послали. Через полчаса ковыряния документации и катехизисов продолжали посылать настойчиво. Строка вызывается из функции и скоп должен остаться локальным. На пхп как вы знаете такие вещи щелкают на раз: $func = 'строка'; $func() // интерпретатор нашел и запустил функцию строка(){} Я понимаю можно сделать несколько if else или даже switch, но не хотелось академически. Хотелось попсово. Кто знает способ как вызвать локальную функцию (а именно кложу) по имени в строке - расскажите пожалуйста. |
Я понимаю что можно вылезти в окно и из него обозреть помещение. Однако в ответ на
console.log(this['Menu']); я вижу свою функцию, а если добавляю console.log(this['Menu']['menu_click']); то х нанэ, то есть undefined. Функция, меж тем конечно есть, в кложе: var menu_click=function(){... |
а return какой-то имеется?
типа return menu_click, например. Хорошо бы чуть больше кода увидеть. |
kostyanet,
Цитата:
|
Я же написаол что снаружи не катит. Я не могу плодить кучу глобальных функций, требуется инкапсулирование как минимум.
|
Цитата:
function Menu(){ var menu_click=function(){}; // тут поиск элементов и связывание функций с событиями // та самая строчка вверху то есть } Где должен быть ретурн? Мне просто интересно, пишут что функция - объект, а получается к к ее пропертям доступа нет из окна. Рисовать объект не буду. Намучился с этим гамном на js - больше не хочу. В стопицот раз проще профтыкать тогда if else |
function Menu(){ var menu_click=function(){}; // тут поиск элементов и связывание функций с событиями // та самая строчка вверху то есть return menu_click; } |
Цитата:
var eventHandlers = {menu_click: function(){}, blablaClick: function(){}}; И далее eventHandlers['menu_click']() Цитата:
Цитата:
|
Ну что блджад, выпили кровь, ECMAть их, пейсателей js. :)
top_menu[i].addEventListener(sub_menu.dataset.event, show[sub_menu.dataset.event], false); Ну и как обычно зл....чий геморр с this'ами. Биндится элемент и ивент. Пока что сделал харкор на вызов собственных методов объекта по имени его отчеству. Я подумал гребись оно конем и забиндил родителя одним событием на маусеовер. Оказалось хоть клик и начинается с овер, но х-то его получишь из Event'а. Там система такая. Это обычное меню пункты которого можно одним ключом в дата-сете сделать либо кликабельные. либо ховерные. Потому что меню одно на все барахло, а там часть сущностей имеет заголовок, а часть не имеет. То есть либо пункт топ-меню ведет на ресурс, либо тупо открывает другие пункты. |
которые кликабельные будут с трехуйгольником вниз.
|
Часовой пояс GMT +3, время: 17:06. |