function的json对象转换字符串与字符串转换为对象的方法

// json对象转换成字符串
var str = JSON.stringify(json, function(key, val) {
if (typeof val === 'function') {
return val + '';
}
return val;
});
// json字符串转换成对象
var json = JSON.parse(str,function(k,v){
if(v.indexOf && v.indexOf('function') > -1){
return eval("(function(){return "+v+" })()")
}
return v;
});

 

eval() 是一个危险的函数, 它使用与调用者相同的权限执行代码。如果你用 eval() 运行的字符串代码被恶意方(不怀好意的人)修改,您最终可能会在您的网页/扩展程序的权限下,在用户计算机上运行恶意代码。更重要的是,第三方代码可以看到某一个 eval() 被调用时的作用域,这也有可能导致一些不同方式的攻击。相似的 Function 就不容易被攻击。

eval() 通常比其他替代方法更慢,因为它必须调用 JS 解释器,而许多其他结构则可被现代 JS 引擎进行优化。

var obj =(new Function("return "+""+j2+""))();

posted on 2019-08-08 16:54  zhangzongshan  阅读(852)  评论(0编辑  收藏  举报

导航