ama*_*eur 32 javascript jquery json observer-pattern
有没有办法可以将函数作为json字符串传递(使用JSON.stringify进行转换),将其发送到另一个函数,解析json然后执行json中的函数?我正在使用jquery和javascript.
Eas*_*one 51
是的你可以.有很多方法可以做到这一点.
并且没有必要使用"邪恶"评估函数(请yahoogle为什么应该避免它),如下所示:http://javascript.about.com/library/bleval.htm
var tmpFunc = new Function(codeToRun);
tmpFunc();
Run Code Online (Sandbox Code Playgroud)
无论是JSON在任何阶段都应该是无关紧要的.
tre*_*ace 21
这是一个有效的例子
基本上,你必须小心这种事情.如果您使用现有的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();
});?
Run Code Online (Sandbox Code Playgroud)
Ski*_*ick 19
是的,您可以使用它的toString()方法将函数转换为字符串.
这是一个示例,显示将函数转换为字符串并返回函数:
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();
Run Code Online (Sandbox Code Playgroud)