再看最后一眼青春的星空

灿烂火光就像盛夏的烟火

欢送挣扎万年文明的巅峰

我们啊

将变星辰永远飘在黑暗宇宙

这个男人来自三体

Tirion

导航

简单的 JSON 对象进行深拷贝最简单的方法

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]"

 

posted on 2017-01-06 13:54  Tirion  阅读(2121)  评论(0编辑  收藏  举报

The Man from 3body