Javascript - str переменная и вызов ф-ии с ее значением

Статус
В этой теме нельзя размещать новые ответы.

bueno

Читатель
Заблокирован
Регистрация
7 Май 2007
Сообщения
236
Реакции
72
  • Автор темы
  • Заблокирован
  • #1
собственно нужно осмыслить след. механизм:

есть функция bar(), выдающая, скажем, какой-нить алерт (напр. alert(1))..
есть переменная, скажем, foo = 'bar'

функций может быть много и разных.. так вот, нужно по имени строковой переменной вызвать функцию.. по желательно с возможностью передачи параметров.. т.е., в данно случае что то вроде
Код:
function bar(){ alert(1) }
foo = 'bar';
foo();
на выходе сообщение (алерт)..

в принципе можно использовать eval, но не хочется.. может есть какой ииной способ выкрутиться.. например как в php.
PHP:
function bar(){ echo 'message'; }
$foo = 'bar';
$foo();
 
Код:
<script>
// function to test on
function sum() {
	rz = 0;
	for (i=1; i<arguments.length; i++) {
		rz += arguments[i];
	}
	alert(arguments[0]+' = '+rz);
}

// arguments: func, arg1, arg2, ...
// func = function name to call
// argX - number|string
function do_call( func) {
	var n = arguments.length;
	var t = [];
	
	for (i=1; i<n; i++) { // skip arguments[1] = func
		arg = arguments[i];
		t[i-1] = (typeof(arg)).toLowerCase()=='number'?arg:'"'+arg+'"';
	}

	setTimeout(func+'('+t.join(',')+')',0);
}

do_call('sum','Math: a girl = 90+60+90',90,60,90);
</script>
 
  • Автор темы
  • Заблокирован
  • #3
гм..
прикольно..
спасибо..

признаться мне даже и в голову не пришло использовать setTimeout.. а какие еще в js есть callback функции (желательно кроссбраузерные)?..
 
больше ничего вразумительного на ум не приходит
 
а так не проще:
Код:
<script>
function test(a,b)
{
	alert(a+b); //выдает алерт с суммой параметров
}

n=test;
n(1,2); //выдаст 3
</script>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху