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

js 对象深拷贝

作者:狂神战天   发布日期:2025-02-23   浏览:87

// 深拷贝函数的实现

function deepClone(obj) {
    // 如果不是对象或者为null,直接返回
    if (obj === null || typeof obj !== 'object') {
        return obj;
    }

    // 初始化新对象或数组
    let clone = Array.isArray(obj) ? [] : {};

    // 遍历对象或数组的所有属性
    for (let key in obj) {
        if (obj.hasOwnProperty(key)) {
            // 递归调用深拷贝函数
            clone[key] = deepClone(obj[key]);
        }
    }

    return clone;
}

// 示例代码
let originalObj = {
    name: "Alice",
    age: 25,
    hobbies: ["reading", "swimming"],
    address: {
        city: "Beijing",
        country: "China"
    }
};

let clonedObj = deepClone(originalObj);

console.log(clonedObj); // 输出克隆后的对象
console.log(clonedObj === originalObj); // false,证明是深拷贝
console.log(clonedObj.hobbies === originalObj.hobbies); // false,证明数组也被深拷贝了
console.log(clonedObj.address === originalObj.address); // false,证明嵌套对象也被深拷贝了

解释说明:

  1. deepClone 函数:这是一个递归函数,用于创建对象的深拷贝。它会遍历对象的所有属性,并对每个属性进行深拷贝。
  2. 处理基本类型和引用类型:如果传入的值不是对象(如字符串、数字等),则直接返回该值;如果是对象,则继续递归处理。
  3. 数组和对象的区别:通过 Array.isArray 判断是否为数组,确保正确地初始化新的数组或对象。
  4. 递归调用:对于对象中的每个属性,递归调用 deepClone 函数,确保所有嵌套的对象和数组都被深拷贝。
  5. 示例代码:展示了如何使用 deepClone 函数,并验证了深拷贝的效果。

上一篇:js 深拷贝方法

下一篇:js 深拷贝对象

大家都在看

js 数组对象排序

js 数组删掉第一个值

js fill

js 数组复制

js 复制数组

js 数组拷贝

js 对象转数组

js 深拷贝数组

js 获取今天年月日

js jsonp

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

Laravel 中文站