美文网首页
简单的JavaScript深度克隆

简单的JavaScript深度克隆

作者: ChooAcc | 来源:发表于2020-05-27 01:21 被阅读0次
let obj = { one: 5, tow: "str", three: [4, 3, 2, 1], four: { a: "A", b: "B" }, five: null, six: undefined };

/**
 * 简单深度克隆
 * @param {被克隆对象} obj 
 */
function deepClone(obj) {
    if (!isObject(obj)) { return obj; }
    let temp = Array.isArray(obj) ? [] : {};
    for (let key in obj) {
        if (isObject(obj[key])) {
            temp[key] = deepClone(obj[key]);
        } else {
            temp[key] = obj[key];
        }
    }
    return temp;
}

/**
 * 检验是否为对象
 * @param {被检查的元素} obj 
 */
function isObject(obj) {
    return obj && typeof obj === "object";
}

// 测试
let copy = deepClone(obj);
copy["three"][0] = 155;
// { one: 5, tow: "str", three: [155, 3, 2, 1], four: { a: "A", b: "B" }, five: null, six: undefined }
console.log(copy);

// 原对象数据不受影响
// { one: 5, tow: "str", three: [4, 3, 2, 1], four: { a: "A", b: "B" }, five: null, six: undefined }
console.log(obj);

相关内容:JavaScript浅克隆对象的方法

相关文章

网友评论

      本文标题:简单的JavaScript深度克隆

      本文链接:https://www.haomeiwen.com/subject/vvhiahtx.html