有什么办法可以将函数作为json字符串传递(使用JSON.stringify进行转换),将它发送给另一个函数,解析json然后执行json中的函数?我正在使用jQuery和JavaScript。在json中传递函数并执行
回答
这里的工作example
基本上,你必须要小心这样的事情。如果您使用现有的JavaScript函数,将其转换为字符串并对其进行评估,则可能会遇到函数重新声明问题。如果你简单地把从服务器的函数字符串,要运行它,你可以做我做对的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();
});
不,你不能这样做。函数不能被JSON序列化。不用将对象转换为JSON,您可以直接将它传递给另一个函数,而无需调用JSON.stringify。
我有一种感觉,他的穿越线somewheres ... – jcolebrand 2010-10-16 00:09:29
JSON = JavaScript对象符号 - 当然,该函数可以被序列化并且来回传递。什么是对象?几乎所有的JS,包括的功能。当“是”是正确的答案时,当有人说“不”时有点恼火。不如说“不是我知道的”。 Bill – 2011-03-09 10:48:36
在我说smt在JavaScript中是不可能的之前,我想了十遍:)几乎没有人会记得JS本身的几个“NO”。 “如何”和“为什么不是”是最常见的问题。 – 2014-06-15 16:42:05
是的,你可以使用它的toString()
方法将函数转换为字符串。
Here's an example显示功能转换为字符串,并返回一个函数:
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();
这种编程方法真的打开你的想法。 – zardilior 2015-07-07 19:26:27
是的,可以。有很多方法可以做到这一点。
而且也没有必要用“邪恶”的eval函数(请yahoogle为什么应该避免)这里指出:http://javascript.about.com/library/bleval.htm
var tmpFunc = new Function(codeToRun);
tmpFunc();
无论是JSON在任何阶段应该是无关的。
+1“yahoogle”。虽然Bing现在不比雅虎更受欢迎?那会是“单调”吗?或者Scott Hanselman在演讲中使用的较长的词组“Google上的Bing”? – GregL 2012-03-09 01:53:49
我同意@GregL,但我前段时间创造了这个短语,只是不想放过它!使用“bingle”,“bingoogle”......对我来说听起来不太合适。此外,英语中有很多词汇和谚语是指过时的东西...... – EasierSaidThanDone 2012-03-11 21:37:05
YabingleYabingleGo – Automatico 2014-06-02 14:00:10
我创建JSONfn的一个分支,它使您能够字符串化和分析的对象和他们的原型。在我的基本测试中,它运行良好。
//添加jQuery库
点击我
var jsonFun = {
fun1 : function(){
alert('Done');
}
}
$('button').click(function(){
jsonFun.fun1();
});
这是我想传递函数JSON的最好办法
- 1. 传递并执行具有不同参数签名的函数
- 2. 传递函数作为参数并执行它
- 3. 将参数传递给并执行存储在数组中的全局函数
- 4. setTimeout不执行传递函数
- 5. Java - 传递和执行函数
- 6. 如何将任何函数作为参数传递并在Swift中执行?
- 7. 如何将值传递给函数并继续执行
- 8. 传递函数作为参数,然后在jQuery函数中执行它
- 9. 在JavaScript函数之间传递Json值
- 10. 在JavaScript函数中传递新行
- 11. 从JSON执行PHP函数
- 12. 在函数上执行setTimeout的问题 - 将此函数作为参数传递
- 13. 推迟执行node.js中的异步消息传递函数
- 14. 执行的onload $(函数(){}定时器内,并传递参数给它
- 15. 如何在函数中传递函数?
- 16. 在UFT中传递函数的函数
- 17. 在函数中使用setInterval并在其中传递参数
- 18. 在向量中传递参数的函数执行程序中的C++歧义
- 19. 如何将JSON传递给viewDidLoad函数中的函数?
- 20. C#Tryinig在if/else语句中执行汇率并将参数传递到主函数中的方法参数
- 21. 传递JSON字符串javascript函数
- 22. 调用jQuery JSON函数并传递返回结果负载
- 23. 调用函数,并将它传递一个JSON对象
- 24. 执行通过数据标记传递的所有函数
- 25. 传递函数为将被执行的参数后
- 26. 如何执行作为参数传递的JQuery匿名函数?
- 27. 将Python函数作为参数传递而不执行它?
- 28. bash传递可执行参数到函数
- 29. 在JSON中传递数组的数组
- 30. 传递数据类型为json未能执行
酷 - 感谢这 – amateur 2010-10-16 14:07:39