Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

js 深拷贝方法

作者:让固执流亡丶   发布日期:2025-02-12   浏览:77

// 深拷贝方法示例

// 方法一:使用 JSON.parse 和 JSON.stringify(简单对象)
function deepClone(obj) {
  return JSON.parse(JSON.stringify(obj));
}

// 解释:这种方法适用于简单的对象或数组,但对于包含函数、undefined、Infinity、Symbol、Date 等特殊类型的对象,可能会出现问题。

// 方法二:递归实现深拷贝
function deepCloneRecursive(obj, hash = new WeakMap()) {
  if (obj === null || typeof obj !== 'object') {
    return obj;
  }

  if (obj instanceof Date) {
    return new Date(obj);
  }

  if (obj instanceof RegExp) {
    return new RegExp(obj);
  }

  if (hash.has(obj)) {
    return hash.get(obj);
  }

  const clonedObj = Array.isArray(obj) ? [] : {};
  hash.set(obj, clonedObj);

  for (let key in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, key)) {
      clonedObj[key] = deepCloneRecursive(obj[key], hash);
    }
  }

  return clonedObj;
}

// 解释:这种方法通过递归遍历对象的每个属性,并为每个对象创建一个新的实例,确保不会共享引用。它还处理了循环引用的问题。

上一篇:js const用法

下一篇:js 对象深拷贝

大家都在看

js 数组对象排序

js 数组删掉第一个值

js fill

js 数组复制

js 复制数组

js 数组拷贝

js 对象转数组

js 深拷贝数组

js 获取今天年月日

js jsonp

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站