¿Hay alguna manera de que pueda pasar una función como una cadena json (conversión con JSON.stringify), enviarla a otra función, analizar el json y luego ejecutar la función que estaba en el json ? Estoy usando jquery y javascript.pasar la función en json y ejecutar
Respuesta
Aquí hay un trabajo example
Básicamente, usted tiene que tener cuidado con este tipo de cosas. Si tomas una función javascript existente, la conviertes en una cadena y la evalúas, es posible que te topes con problemas de redeclaración de funciones. Si simplemente está tomando una cadena función del servidor y desea ejecutarlo, puede hacerlo como lo hice en ese jsFiddle:
Javascript
var myFunc = "function test() {alert('test');}";
$(document).ready(function() {
var data = new Object();
data.func = myFunc;
var jsonVal = $.toJSON(data);
var newObj = $.evalJSON(jsonVal);
eval(newObj.func);
test();
});
No, no puede hacer esto. Las funciones no pueden ser serializadas por JSON. En lugar de convertir el objeto en JSON, puede pasarlo directamente a la otra función sin llamar a JSON.stringify.
Tengo la sensación de que está atravesando un alambre somewheres ... – jcolebrand
JSON = JavaScript Notación de objetos: por supuesto, la función se puede serializar y pasar de un lado a otro. ¿Qué es un objeto? Casi cualquier cosa en JS, funciones incluidas. Ofrézcase un poco molesto cuando alguien diga "No" cuando "SÍ" sea la respuesta correcta. Mejor decir 'no que yo sepa'. Bill –
Pensaría diez veces antes de decir que smt no es posible en JavaScript :) Casi ni siquiera se pueden recordar algunos "NO" en JS per se. "CÓMO" y "POR QUÉ NO" son las preguntas más comunes. –
Sí, puede convertir una función en una cadena con su método toString()
.
Here's an example para mostrar la conversión de una función en una cadena y volver a una función:
var myfunc = function() {
alert('It works!');
}
var as_string = myfunc.toString();
as_string = as_string.replace('It works', 'It really works');
var as_func = eval('(' + as_string + ')');
as_func();
Este enfoque de programación realmente abre su mente. – zardilior
Sí, se puede. Hay muchísimas formas de hacerlo.
Y no hay necesidad de utilizar la función eval "malo" (por favor yahoogle por lo que debe evitarse) como se ha señalado aquí: http://javascript.about.com/library/bleval.htm
var tmpFunc = new Function(codeToRun);
tmpFunc();
Ya fuera JSON en cualquier etapa debería ser irrelevante.
+1 por "yahoogle". Aunque Bing no es más popular que Yahoo en estos días? ¿Sería eso "bingle"? ¿O la frase más larga que Scott Hanselman usó en las presentaciones "Google it on Bing"? – GregL
Estoy de acuerdo @GregL, pero acuñé esta frase hace algún tiempo y ¡simplemente no quiero dejarla pasar! Usar "bingle", "bingoogle" ... simplemente no me suena bien. Además, hay un montón de palabras y proverbios en el idioma inglés que se refieren a cosas obsoletas ... – EasierSaidThanDone
YabingleYabingleGo – Automatico
eche un vistazo al plugin JSONfn.
http://www.eslinstructor.net/jsonfn/
que hace exactamente lo que estás pidiendo.
-Vadim
he creado un tenedor de JSONfn que le permite stringify y analizará los objetos y sus prototipos. En mis pruebas básicas funcionó bien.
// Agregar biblioteca jQuery
Soy más
var jsonFun = {
fun1 : function(){
alert('Done');
}
}
$('button').click(function(){
jsonFun.fun1();
});
Esto es lo que la mejor manera de pasar función en JSON
- 1. ¿Pasar una función como parámetro en jQuery?
- 2. jquery: pasar variables en la función hover()?
- 3. Pasar y ejecutar delegar en un dominio de aplicación separado
- 4. Pasar un Objeto de Función y Llamarlo
- 5. Javascript - SyntaxError captura y ejecutar función alternativa
- 6. ¿Cómo pasar la función del prototipo?
- 7. Pasar la función puntero a miembro como puntero a función
- 8. Python - Pasar una función a otra función
- 9. ¿Cómo remitir el id del elemento html especificado en Visualforce y pasar a la función javascript?
- 10. Forzar la función .change() para ejecutar - jQuery
- 11. Ejecutar la función especificada cada X segundos
- 12. Pasar un día con JSON a .NET
- 13. Cómo pasar el objeto JSON a la nueva actividad
- 14. Ejecutar la función luego seguir el enlace
- 15. Pasar un parámetro en lugar de devolverlo de la función
- 16. Ejecutar la función solo en la primera ejecución ios
- 17. Pasar datos del archivo local utilizando json
- 18. JSON serializar un objeto con parámetros de la función
- 19. Pasar $ (esto) a una función
- 20. Cómo usar pasar una matriz en la función PL/SQL
- 21. Cómo pasar Evento como parámetro en la función JQuery
- 22. y la función y la función() en Perl
- 23. Pasar un parámetro opcional en PHP Función
- 24. pasar una función a una función en Matlab
- 25. respuesta JSON usando cfscript función
- 26. Pasar una función a otra función en Actionscript 3
- 27. ¿Cómo pasar el predicado a la función en C#?
- 28. ¿Cómo pasar la función de miembro como argumento en python?
- 29. Deserialización de XML en JSON sin utilizar la función XmlDocument.Loadxml()
- 30. ¿Error al pasar variable indefinida a la función?
genial - gracias por este – amateur