var json = { a: 123, b: '456' };var json2 = JSON.parse(JSON.stringify(json));
只需要先使用 JSON.stringify() 转成字符串,再通过 JSON.parse() 转成一个新的 JSON 对象即可。
注:此方法只针对简单的 JSON 对象,如果对象中含有函数,则不能使用此方法。JSON.stringify(..) 在对象中遇到值为 undefined、function 和 symbol 时会自动将这个字段忽略,在数组中则会返回 null(以保证单元位置不变)。
可以通过第二个参数将函数转换为其它可显示的内容:
var a = [ 1, function(){ /*..*/ }, 2, function(){ /*..*/ }];JSON.stringify( a ); // "[1,null,2,null]"JSON.stringify( a, function(key,val){ if (typeof val == "function") { // 函数的ToBoolean强制类型转换 return !!val; } else { return val; }} );// "[1,true,2,true]"