深度复制对象指的是创建一个与原始对象完全相同的新对象,但是两个对象是完全独立的,即修改新对象不会影响原始对象。以下是一些实现深度复制对象的方法:

  1. 使用 JSON.parse 和 JSON.stringify

这种方法需要将对象转换为字符串再转换回对象,因此不适用于包含函数和循环引用的对象。

var obj = {a: {b: 1}};
var newObj = JSON.parse(JSON.stringify(obj));
  1. 递归复制

递归复制需要遍历对象的所有属性和值,如果属性是一个对象,则递归调用该方法。这种方法可以处理包含函数和循环引用的对象。

function deepClone(obj) {
  if (typeof obj !== 'object' || obj === null) {
    return obj;
  }
  var newObj = Array.isArray(obj) ? [] : {};
  for (var key in obj) {
    newObj[key] = deepClone(obj[key]);
  }
  return newObj;
}
var obj = {a: {b: 1}};
var newObj = deepClone(obj);
  1. 使用 Object.assign

Object.assign 可以将多个对象合并成一个新对象,因此可以使用它来复制对象。

var obj = {a: {b: 1}};
var newObj = Object.assign({}, obj);

需要注意的是,Object.assign 只能复制第一层的属性和值,如果对象的属性是一个对象,则复制的是引用。因此,对新对象的修改会影响原始对象的属性。

js 深度复制对象

原文地址: https://www.cveoy.top/t/topic/AOB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录