Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.02.2014, 11:25
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Переменая переменной или имя функции из строки
Изначально было так, с подозрением что сразу пошлют:

top_menu[i].addEventListener(sub_menu.dataset.event, 'menu_'+sub_menu.dataset.event, false);


ну и послали. Через полчаса ковыряния документации и катехизисов продолжали посылать настойчиво.

Строка вызывается из функции и скоп должен остаться локальным. На пхп как вы знаете такие вещи щелкают на раз:

$func = 'строка';
$func() // интерпретатор нашел и запустил функцию строка(){}

Я понимаю можно сделать несколько if else или даже switch, но не хотелось академически. Хотелось попсово.

Кто знает способ как вызвать локальную функцию (а именно кложу) по имени в строке - расскажите пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 17.02.2014, 11:32
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Я понимаю что можно вылезти в окно и из него обозреть помещение. Однако в ответ на

console.log(this['Menu']);

я вижу свою функцию, а если добавляю

console.log(this['Menu']['menu_click']);

то х нанэ, то есть undefined. Функция, меж тем конечно есть, в кложе:

var menu_click=function(){...
Ответить с цитированием
  #3 (permalink)  
Старый 17.02.2014, 11:38
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

а return какой-то имеется?
типа return menu_click, например.
Хорошо бы чуть больше кода увидеть.
Ответить с цитированием
  #4 (permalink)  
Старый 17.02.2014, 11:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

kostyanet,
Сообщение от kostyanet
Я понимаю что можно вылезти в окно и из него обозреть помещение
то есть так window['menu_'+sub_menu.dataset.event] для вас не катит?
Ответить с цитированием
  #5 (permalink)  
Старый 17.02.2014, 11:57
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Я же написаол что снаружи не катит. Я не могу плодить кучу глобальных функций, требуется инкапсулирование как минимум.
Ответить с цитированием
  #6 (permalink)  
Старый 17.02.2014, 12:02
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от BETEPAH
типа return menu_click, например.
Какой ретурн?

function Menu(){

var menu_click=function(){};

// тут поиск элементов и связывание функций с событиями
// та самая строчка вверху то есть

}


Где должен быть ретурн?

Мне просто интересно, пишут что функция - объект, а получается к к ее пропертям доступа нет из окна.

Рисовать объект не буду. Намучился с этим гамном на js - больше не хочу. В стопицот раз проще профтыкать тогда if else
Ответить с цитированием
  #7 (permalink)  
Старый 17.02.2014, 12:53
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

function Menu(){

var menu_click=function(){};

// тут поиск элементов и связывание функций с событиями
// та самая строчка вверху то есть
return menu_click;
}
Ответить с цитированием
  #8 (permalink)  
Старый 17.02.2014, 13:29
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от kostyanet
в кложе
Не получится. Переделай на объкт, скажем:
var eventHandlers = {menu_click: function(){}, blablaClick: function(){}};
И далее eventHandlers['menu_click']()

Сообщение от kostyanet
пишут что функция - объект, а получается к к ее пропертям...
Зачем тебе свойства функции? Они неинтересные.

Сообщение от kostyanet
нет из окна
Нужблядь... На то это и локальная переменная. Нужен доступ из глобала - делай ее глобальной, либо делай свойством доступного объекта.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 17.02.2014, 13:45
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Ну что блджад, выпили кровь, ECMAть их, пейсателей js.

top_menu[i].addEventListener(sub_menu.dataset.event, show[sub_menu.dataset.event], false);


Ну и как обычно зл....чий геморр с this'ами. Биндится элемент и ивент. Пока что сделал харкор на вызов собственных методов объекта по имени его отчеству.

Я подумал гребись оно конем и забиндил родителя одним событием на маусеовер. Оказалось хоть клик и начинается с овер, но х-то его получишь из Event'а.

Там система такая. Это обычное меню пункты которого можно одним ключом в дата-сете сделать либо кликабельные. либо ховерные. Потому что меню одно на все барахло, а там часть сущностей имеет заголовок, а часть не имеет. То есть либо пункт топ-меню ведет на ресурс, либо тупо открывает другие пункты.
Ответить с цитированием
  #10 (permalink)  
Старый 17.02.2014, 13:46
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

которые кликабельные будут с трехуйгольником вниз.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вложенные функции, плохо или не очень? Bebarr Swallow Общие вопросы Javascript 2 25.06.2012 12:31
Установить имя конструктора Андрей Параничев Общие вопросы Javascript 8 17.11.2011 10:09
изменение значения глобальной переменной внутри функции mgmarket Серверные языки и технологии 14 13.09.2011 00:56
Функции поиска и замены строк или регулярные выражения? Armen Общие вопросы Javascript 1 01.01.2010 12:35
Переменная от переменной или как к имени переменной конкатенировать значение другой Aderba jQuery 5 12.11.2008 15:25