求问json传递匿名函数的问题

redlz2500 2015-05-14 08:38:27
想直接在json中传递匿名函数,并以此来作为前台处理的依据,但是不是jsonp的概念,而是一次性载入json,然后前台根据需要进行调用,结果发现无法实施
对于
1、

{"a":function (){var sss;}}

这样的一个json文件,jquery无法解析
在本地定义:
2、

var test="{'a':function (){var sss;}}";
test=$.parseJSON(test);

同样无法解析

退一步,我用字符串定义后再eval行了吧?
但是使用:
3、

var test={
'a':'function(){}'
};
var sss;
test.a=eval(test.a);
var mmm;

也不能解析

因为数据是放在一个本地仓库里面,所以将json代码改成了
4、

MyStorage.define.push({
"a":function(){}
});

这样的方式然后用script载入,虽然这样可以用,但是没有搞清楚为什么在json字符串中不能转换匿名函数
另外求除了4的方法外还有什么其他方法没有?
...全文
156 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
redlz2500 2015-05-24
  • 打赏
  • 举报
回复
引用 1 楼 slwsss 的回复:
用eval解析 eval('('+'{"a":function(){alert(1)}}'+')').a()
好像有点儿明白了……
var test={
    'a':'function(){}'
};
var sss;
test.a=eval(test.a);
var mmm;
这里eval等价于 eval('function(){}'),返回值应该是undefined吧?如何让其返回这个函数本身呢? eval('('+test.a+')')?? 哎呀我真傻…… function statement requires a name
var test={
    'a':'function(){alert(1);}'
};
var sss;
//test.a=eval('('+test.a+')');
test.a=eval(test.a);
test.a();
var mmm;
redlz2500 2015-05-24
  • 打赏
  • 举报
回复
引用 1 楼 slwsss 的回复:
用eval解析 eval('('+'{"a":function(){alert(1)}}'+')').a()
请看看为什么3不能执行啊?
redlz2500 2015-05-24
  • 打赏
  • 举报
回复
引用 3 楼 u010892827 的回复:
var aa={"bb":function(){alert('11')}}; aa.bb();不会在浏览器中弹出 11?
你这个可以啊,但是你这个实际上直接就将bb定义为了一个匿名函数 而我的初始代码中,匿名函数本身并不是执行的,而是一个字符串,必须得eval后才能执行 你看我1、2、3都是在用文本化的匿名函数定义,到4的时候才是直接写的匿名函数,尤其是3,不能执行简直没有搞懂
u010892827 2015-05-15
  • 打赏
  • 举报
回复
var aa={"bb":function(){alert('11')}}; aa.bb();不会在浏览器中弹出 11?
未知数 2015-05-14
  • 打赏
  • 举报
回复
可能jquery解析时验证了类型,目的应该是安全性,因为允许数据中混杂代码是有风险的
slwsss 2015-05-14
  • 打赏
  • 举报
回复
用eval解析 eval('('+'{"a":function(){alert(1)}}'+')').a()

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧