请高手解释一段JS代码

h821291419 2010-06-01 03:51:59
如下:

String.prototype.toJson=function(){
if(!this||this=="")
return null;
return (new Function("return "+this))();
}

这样一个方法 可以将Json字符串 转换成Json对象 以前只用过eval之类的
(new Function("return "+this))() 这一段不是就创建一个有返回值函数调用么..
传入的字符串怎么就变成Json对象了.. 是 new Function()本身就有这个功能还是怎么的.. 费解..
...全文
109 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
l6801567 2010-06-01
  • 打赏
  • 举报
回复

Function可以表示开发者定义的任何函数,是javascript内置类型.用Function直接创建函数的语法如下:
var function_name=new Function(argument1,argument2,......,argumentN,function_body);
示例:

var sayHi =new Function("sname","sMessage","alert(\"Hello\"+sname+\",\"+sMessage+\"!\");");
function_body 是字符串形式,由解释器解释
sayHi("这是第一个参数sname","这是第二个参数sMessage");
浪尖赏花 2010-06-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 h821291419 的回复:]
原来如此... 呵呵..
那这种方式 与 eval() 区别是什么? 性能方面哪一种方式会更好些
[/Quote]
这个没研究过
这里有个帖子,希望对LZ有帮助
eval与function的性能比较
h821291419 2010-06-01
  • 打赏
  • 举报
回复
原来如此... 呵呵..
那这种方式 与 eval() 区别是什么? 性能方面哪一种方式会更好些
浪尖赏花 2010-06-01
  • 打赏
  • 举报
回复
sorry,上面var o = "{a:'aaa',b:'bbb'}").toJson();多了个括号
浪尖赏花 2010-06-01
  • 打赏
  • 举报
回复
通俗一点
<script>
String.prototype.toJson=function(){
if(!this||this=="")
return null;
return (new Function("return "+this))();
//这里可以看作new Function("return {a:'aaa',b:'bbb'}"))(),结果是什么,应该一目了然了吧
}
var o = "{a:'aaa',b:'bbb'}").toJson();
alert(o.a);//aaa
</script>
sohighthesky 2010-06-01
  • 打赏
  • 举报
回复
new Function();//将参数解析 为函数体,并返回一个函数,
然后()执行

87,904

社区成员

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

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