如下:String.prototype.toJson=function(){
    if(!this||this=="")
        return null;
    return (new Function("return "+this))();
}这样一个方法 可以将Json字符串 转换成Json对象 以前只用过eval之类的
(new Function("return "+this))()  这一段不是就创建一个有返回值函数调用么..
传入的字符串怎么就变成Json对象了.. 是 new Function()本身就有这个功能还是怎么的..  费解..

解决方案 »

  1.   

    new Function();//将参数解析 为函数体,并返回一个函数,
    然后()执行
      

  2.   

    通俗一点
    <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>
      

  3.   

    sorry,上面var o = "{a:'aaa',b:'bbb'}").toJson();多了个括号
      

  4.   

    原来如此...  呵呵.. 
    那这种方式  与 eval()  区别是什么?  性能方面哪一种方式会更好些
      

  5.   

    这个没研究过
    这里有个帖子,希望对LZ有帮助
    eval与function的性能比较
      

  6.   


    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");