Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вызов функции через переменную (https://javascript.ru/forum/misc/55588-vyzov-funkcii-cherez-peremennuyu.html)

iNfantry 05.05.2015 16:43

Вызов функции через переменную
 
Всем привет, не могу понять как сделать простейшую вещь - вызвать функцию через переменную по аналогии с пхп.
Например у меня есть функция my_func() и я хочу присвоить ее имя переменной fn_name = 'my_func'; и вызвать fn_name.apply(this, '123'), но мне пишет что в fn_name - не функция, как это делается в яваскрипте самым простым способом?

vasa_c 05.05.2015 16:57

Зачем? Поместите в переменную саму функцию, а не имя.

Safort 05.05.2015 17:30

function my_func() {
alert('lala');
}
var fn_name = 'my_func';
window[fn_name]();

Decode 05.05.2015 17:32

function myFunc() {
  alert(this);
}

var fnName = myFunc;

fnName.call(123);

iNfantry 06.05.2015 01:29

Safort, большое спасибо, то что надо!
vasa_c, дело в том, что имя функции генерится динамически.
Кстати, я еще один способ нашел - просто через eval().

vasa_c 06.05.2015 07:54

Ну, вот, дали человеку решение в лоб, теперь он будет фигнёй маятся, вместо того, чтобы подумать.

Erolast 06.05.2015 11:02

Цитата:

vasa_c, дело в том, что имя функции генерится динамически.
Херня. Так не должно быть.

iNfantry 08.05.2015 17:35

Цитата:

Сообщение от vasa_c (Сообщение 369599)
Ну, вот, дали человеку решение в лоб, теперь он будет фигнёй маятся, вместо того, чтобы подумать.

О чем подумать? Что не так?

Erolast 08.05.2015 19:38

Хотя бы о том, что использование эвала исключает любые оптимизации кода интерпретатором.

Цитата:

имя функции генерится динамически
Зачем?

iNfantry 11.05.2015 14:24

Цитата:

Сообщение от Erolast (Сообщение 369967)
Зачем?

Допустим есть несколько однотипных функций funcA, funcB и funcC, вместо кучи ифов удобно использовать сразу вызов нужного имени. Это плохо?


Часовой пояс GMT +3, время: 20:21.