часть имени функции в переменной
Добрый вечер.
Есть функция xxx_myfunc(){}. Так вот xxx постоянно меняется. Зато его есть в глобальной переменной name. Не могу сообразить, как вызвать эту функцию? Типа: name+'_myfunc'(); |
eval(name+"_myfunc()")
foo_func=function(){alert("foo")} bar_func=function(){alert("bar")} name="foo" eval(name+"_func()") name="bar" eval(name+"_func()") Это чтоли надо? без eval: foo_func=function(){alert("foo")} bar_func=function(){alert("bar")} name="foo" call_func=function(){ window[name+"_func"]() } call_func() name="bar" call_func() // foo // bar |
Цитата:
var n = 1; function some_myfunc() { alert("good job " + n); n++; } var name = "some"; var funcName = name + "_myfunc"; window[funcName](); eval(funcName)(); |
спасибо всем
|
bes,
Я не совсем понял смысл Вашего примера (кстати, в ноде Ваш код не работает, работает, если использовать FE -- это к слову), ведь ТС сказал, что xxx-часть ф-ции меняется, а у вас some_myfunc=function () { alert("some"); } another_myfunc=function(){ alert("another") } var name = "some"; funcName = name + "_myfunc"; window[funcName](); eval(funcName)() name="another" window[funcName](); eval(funcName)() // some // some // some // some И особенно непонятно: eval(funcName)() Это то же самое, что funcName() Зачем там eval нужен? |
ild,
Если Вы хотите без eval, я добавил вариант в первый ответ, на всякий случай. |
ild, eval не стоит использовать. Либо через window, либо все ф-ции засунуть в объект и обращаться к ним таким образом:
var obj = { test: function() { alert(1); }, foo: function() { alert(2); } }; var name = 'test'; obj[name](); var name2 = 'foo'; obj[name2](); |
Цитата:
Цитата:
а если так? some_myfunc=function () { console.log("some"); } another_myfunc=function(){ console.log("another") } var name = "some"; funcName = name + "_myfunc"; window[funcName](); eval(funcName)() name="another" funcName = name + "_myfunc"; window[funcName](); eval(funcName)() // some // some // another // another Цитата:
в общем, Ruslan_xDD, показал как рекомендуется делать |
Цитата:
(function () { var foo_func=function(){alert("foo")} var bar_func=function(){alert("bar")} name="foo" call_func=function(){ window[name+"_func"]() } call_func() name="bar" call_func() // foo // bar })(); |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 11:51. |