码迷,mamicode.com
首页 > Web开发 > 详细

(new Function("return " + json))();

时间:2015-09-15 17:56:39      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:

2015-9-15 16:26:05

这几天看到了这段代码:

var ToJson=function(A) {                    
        try        
        {
            ///运行return中的函数体(return A);返回A。
            return (new Function("return " + A))();
        }
        catch(e)
        {
            return "";
        }
    };

一直搞不明白是什么意思。问了同事之后说是字符串转成json用的,还是不明白原理是什么。遂百度之,看到了这样一个问答:(new Function("return " + str))(); 求解 为什么阔以将一个json字符串转换为json。那位js高手知道原因,指点下,弄了一天没有弄明白为什么。 

回答:new Function() 接收字符串,转换成函数。把"return" + str转换成函数的时候,str被转换成了对象(不是转换为JSON),然后使用(function(){return obj;})()方式立即执行new Function()生成的函数,函数只有一句return obj;执行结果就是str字符串转换而来的对象。

 

(new Function("return " + json))();

标签:

原文地址:http://www.cnblogs.com/lswit/p/4810668.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!