浅拷贝和深拷贝的核心区别,以及深拷贝的具体实现方法

0 阅读1分钟
  • 浅拷贝 (Shallow Copy) :只拷贝第一层数据,嵌套的引用类型数据共用同一块内存,修改会互相影响。

  • 深拷贝 (Deep Copy) :递归拷贝所有层级数据,完全独立,修改不会互相影响

深拷贝的 4 种实现方法:

方法 1:JSON 序列化

const deepClone = JSON.parse(JSON.stringify(obj));

方法 2:手写递归深拷贝

function deepClone(obj) {

// 基本类型直接返回

if (obj === null || typeof obj !== 'object') { return obj; }

// 区分数组和对象

const result = Array.isArray(obj) ? [] : {};

// 递归拷贝所有属性

for (let key in obj) {

if (obj.hasOwnProperty(key)) {

result[key] = deepClone(obj[key]);

} } return result;

}

方法 3::structuredClone(浏览器原生 API)

const deepClone = structuredClone(obj);