PDA

Просмотр полной версии : как можно вызвать их (Функции) одна за другой


asb_0
12.11.2006, 19:10
имеется массив в котором хранятся - а) названия функций б) их параметры
как можно вызвать их (Функции) одна за другой при этом параметры типа таких -(199,199,222)
пробовал eval но что вписывать в передаваемые функции массив то возвращает строку....
я пытался так
eval(cod_Array[def][0])(cod_Array[def][1]);
что подскажете?

iNils
12.11.2006, 19:21
Для оформления своего кода, надо использовать теги .

BigDan
12.11.2006, 22:53
Тебе на помощь прийдет класс Function.
И метод Fucntion.call(.......);

wvxvw
12.11.2006, 23:04
а почему нужно добавлять название функции в массив, а не ее саму? Было бы проще жить.
function a(){
trace("A");
}
function b(){
trace("B");
}
var func_arr:Array = [];
func_arr.push(a);
func_arr.push(b);
func_arr[0]();
func_arr[1]();

asb_0
13.11.2006, 12:48
а как передавать ее параметры тогда?

etc
13.11.2006, 13:29
func_arr[0](param1, param2, …);

Бармалей
13.11.2006, 14:02
Странно. Я почему-то пришел к выводу при проектировании класса подобного конвейеру Потапенко, что использование конструкций func_arr[1]() неприменимо и нужно пользоваться call() или apply(). Попытаюсь вечером разобраться почему я так решил.

etc
13.11.2006, 14:08
Не, ну можно call или apply, если хотите. Только зачем, если не нужно менять область видимости…

a = function() {…}
a — ссылка на function. Вызов a() вас же ничем не смущает? Если угодно, a = func_arr[i]; a(param1, param2, …);

asb_0
13.11.2006, 16:08
если параметры одной строкой передаются и хранятся то разобрать тоько apply() получилось , а func_arr[0](param1, param2, …); подходит если параметры не динамические

etc
13.11.2006, 16:11
Ну это само собой.