当前位置 : 主页 > 网络编程 > JavaScript >

对JSON对象进行拷贝,而不是进行引用传递

来源:互联网 收集:自由互联 发布时间:2021-07-03
在Javascript里,如果拷贝对象是基本类型,我们直接赋值就可以了;如果不是基本类型,那么赋值时其实只是做了引用传递,当原对象改变时拷贝对象将会一同变化。该方法提供了针对
在Javascript里,如果拷贝对象是基本类型,我们直接赋值就可以了;如果不是基本类型,那么赋值时其实只是做了引用传递,当原对象改变时拷贝对象将会一同变化。该方法提供了针对JSON对象的拷贝功能。经实测后发现当被拷贝的JSON对象属性值为基本类型,数组或函数时默认为拷贝,当属性值为JSON对象时默认为引用传递,故针对其递归调用拷贝,而其他为直接赋值。

1. [代码]对JSON对象进行深拷贝,而不是进行引用传递    

/**
* 对JSON对象进行深拷贝,而不是进行引用传递
* @param obj 待拷贝的JSON对象
*/
copyJsonObj: function(obj) {
    if(!!obj && typeof(obj) == "object") {
        var copyObj = {};

        for(var field in obj) {
            if(typeof(obj[field]) == "object") {
                copyObj[field] = copyJsonObj(obj[field]);
            }else {
                copyObj[field] = obj[field];
            }
        }

        return copyObj;
    }

    return obj;
}
网友评论