часть имени функции в переменной
Добрый вечер.
Есть функция 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, время: 02:01. |