如下:String.prototype.toJson=function(){
if(!this||this=="")
return null;
return (new Function("return "+this))();
}这样一个方法 可以将Json字符串 转换成Json对象 以前只用过eval之类的
(new Function("return "+this))() 这一段不是就创建一个有返回值函数调用么..
传入的字符串怎么就变成Json对象了.. 是 new Function()本身就有这个功能还是怎么的.. 费解..
if(!this||this=="")
return null;
return (new Function("return "+this))();
}这样一个方法 可以将Json字符串 转换成Json对象 以前只用过eval之类的
(new Function("return "+this))() 这一段不是就创建一个有返回值函数调用么..
传入的字符串怎么就变成Json对象了.. 是 new Function()本身就有这个功能还是怎么的.. 费解..
然后()执行
<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>
那这种方式 与 eval() 区别是什么? 性能方面哪一种方式会更好些
这里有个帖子,希望对LZ有帮助
eval与function的性能比较
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");