Essa técnica não é das mais difíceis, nem das mais extensas. Explicarei elas pra quem está começando com Ajax, mas também é útil para POO (mas de outra maneira).
Às vezes pode ser necessário importar uma função personalizada de um script server-side, criada dinamicamente, na hora, para satisfazer um requisito qualquer. Não interessa muito qual o propósito de uma função deste tipo, ela pode ser usada para muitas coisas.
var funcao = 'function test(texto) { alert(texto); }';
eval( '(' + funcao + ')' );
Se você já tentou o código acima (ou algo parecido, quis tirar a parte dos requests pra diminuir o tamanho do texto), não deve ter tido grande sucesso. Isso porque você não gravou esta função, você apenas escreveu ela e depois ela foi “apagada”. Precisamos registrar a função para poder usa-la. Veja:
var funcao = 'func = function (texto) { alert(texto); }';
eval( '(' + funcao + ')' );
Tente isso. Você provavelmente obterá sucesso. A função que desejamos foi registrada (através de sua compilação com eval, como no código mais acima) como “func”. Fácil, não?
Mas não há motivo algum pra fazer isso. Poderíamos ter registrado a função diretamente, como sempre fazemos, certo? CERTO (pensou que eu ia dizer que não, né?), já que não estaríamos usando uma string como função. Esse exemplo é para ser usado com Ajax (onde “funcao” é o responseText).
E se eu quiser registrar uma função de forma diferente, sem Ajax? Da mesma maneira, mas sem precisar compila-la:
var func = function (texto) { alert(texto); };
E usamos normalmente. Mais um exemplo, agora com JSON:
var busca =
{
completa: function(texto) { ...busca... },
simples: function(texto) { ...busca... }
}
E usando-a:
busca.completa("Texto");
busca.simples("Texto");
metodo.Simples() não? Basta aprender a usar direitinho.