简单的JavaScript深度克隆

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浅克隆对象的方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容