递归实现深拷贝

    // 递归实现一个深拷贝
    function deepClone(source) {
        if (!source || typeof source !== 'object') {
            throw new Error('error arguments', 'shallowClone');
        }
        var targetObj = source.constructor === Array ? [] : {}; //创建一个新的对象来保存拷贝
        for (var keys in source) {
            if (source.hasOwnProperty(keys)) {
                if (source[keys] && typeof source[keys] === 'object') { //如果属性是对象,递归拷贝
                    targetObj[keys] = source[keys].constructor === Array ? [] : {};
                    targetObj[keys] = deepClone(source[keys]);
                } else { //如果属性是数据类型,直接复制
                    targetObj[keys] = source[keys];
                }
            }
        }
        return targetObj;
    }

你可能感兴趣的:(递归实现深拷贝)