前端数据拷贝(浅拷贝、深拷贝)

浅拷贝

1 直接赋值

2 扩展运算符(...)

3 abject.assign()

Object.assign({}, obj);

4 slice和concat

slice 截取数组

concat 拼接数组

深拷贝

1 JSON.parse(JSON.stringify(待拷贝对象))

2 使用第三方库 Lodash

javascript 复制代码
const _ = require('lodash');

let obj = {
    name: 'demo',
    age: 26
}

let obj2 = _.cloneDeep(obj);
obj2.name = "demo_new";

console.log(obj); // {name: "demo", age: 26}
console.log(obj2); // {name: "demo_new", age: 26}

3 手写一个深拷贝

javascript 复制代码
function deepClone (obj) {
    if (typeof obj !== 'object' || obj == null) {
        return obj;
    }
    
    let deepCloneObj = Array.isArray(obj) ? [] : {}
    
    for (let key in obj) {
        if (obj.hasOwnProperty(key)) {
            deepCloneObj[key] = deepClone(obj[key]);
        }
    }
    
    return deepCloneObj;
}
相关推荐
社恐的下水道蟑螂17 分钟前
LangChain 进阶实战:从玩具 Demo 到生产级 AI 应用(JS/TS 全栈版)
前端·langchain·openai
Fairy要carry20 分钟前
项目01-手搓Agent之loop
前端·javascript·python
亲亲小宝宝鸭25 分钟前
Ctrl ACV工程师的提效之路:删掉项目中的冗余
前端
kyriewen28 分钟前
DOM树与节点操作:用JS给网页“动手术”
前端·javascript·面试
米饭同学i31 分钟前
基于腾讯云COS的小程序素材上传功能实现
前端·javascript·react.js
cxxcode31 分钟前
前端性能指标接入 Prometheus 技术方案
前端
辣椒炒代码32 分钟前
🚀 AI Agent 入门实战:基于 LangChain + MCP 构建智能导游助手
前端
ruanCat36 分钟前
前端工程化工具链从零配置:simple-git-hooks + lint-staged + commitlint
前端·git·代码规范
Jackson__1 小时前
AI时代,前端开发者到底还剩下什么?又该往哪里走?
前端·ai编程
C澒1 小时前
微前端容器标准化:容器标准化演进
前端·架构