标签:
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