对象和数组的深拷贝

var obj = {a: 11, b: {c: 22, d: 33, e: {f: 44, g: {h: 55}}}}

var arr = [11, [22, 33, [44, [55]]]]

function copyObj(obj) {

    var newObj = obj.constructor === Array ? [] : {};

    for (var key in obj) {

        if(obj.hasOwnProperty(key)) {

            // 这里使用递归,属性类型为对象则进一步遍历

            if (obj[key] && typeof obj[key] === 'object') {

                newObj[key] = obj[key].constructor === Array ? [] : {};

                newObj[key] = copyObj(obj[key])

            } else {

                newObj[key] = obj[key]

            }

        }

    }

    return newObj

}

附运行效果图


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容