深度克隆javaScript

104 阅读1分钟
/**
 * 深度克隆
 * @param {any} value 任意类型的值
 */
 
function deepClone(value) {
    // 非原始值的情况
    // 判断数组
    if (Array.isArray(value)) {
        var clone = [];
        for (var i = 0; i < value.length; i++) {
            clone[i] = deepClone(value[i]);
        }
        return clone;
    }
    // 判断对象
    if (typeof value === 'object' && value !== null) {
        var clone = {};
        for (var k in value) {
            clone[k] = deepClone(value[k]);
        }
        return clone;
    }

    return value;
}
var o1 = [1, 2, { a: 1, b: [3, 2, 1] }];
var o2 = deepClone(o1);
console.log(o2);
console.log(o2[2] === o1[2]);