JavaScript的深拷贝与浅拷贝

一句话来解释什么是深浅拷贝,B拷贝A,当修改A,B如果变化,就是浅拷贝,反之就是深拷贝

基本原理:

1.递归函数
2.对象内的值都是简单数据类型时 直接进行赋值
3.当我们遇到数组和对象时,可以再次调用函数,利用递归去拷贝数组和对象内的每个值
4.先数组 后对象  因为数组也是对象 

下面是一个实现深拷贝的函数:

 1 function deepClone(obj) {
 2         let objClone = Array.isArray(obj) ? [] : {};
 3         if (obj && typeof obj === "object") {
 4             for (key in obj) {
 5                 if (obj.hasOwnProperty(key)) {
 6                     //判断ojb子元素是否为对象(复杂数据类型),如果是,递归复制
 7                     if (obj[key] && typeof obj[key] === "object") {
 8                         objClone[key] = deepClone(obj[key]);
 9                     } else {
10                         //如果不是,简单复制(基本数据类型)
11                         objClone[key] = obj[key];
12                     }
13                 }
14             }
15         }
16         return objClone;
17     }

 

原文链接:https://www.cnblogs.com/ITBOSS-Li/p/17274036.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript的深拷贝与浅拷贝 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • 浅谈php安全性需要注意的几点事项

    当开发任何Web应用程序时,安全性应该始终是开发人员的首要任务。在PHP应用程序中,如何确保程序的安全性?以下是几个需要注意的关键点: 1. 合适的数据验证 合适的数据验证是确保web应用程序的安全性的基本工具。在PHP中,应该使用一个专门的验证库,例如Symfony的Validation组件、Laravel的验证器等。通过使用这些验证库,可以确保用户提供的…

    JavaScript 2023年6月11日
    00
  • javascript history对象详解

    JavaScript history对象详解 什么是history对象 history对象是JavaScript的一个属性,它代表了用户在浏览器中访问过的URL记录,通过它,我们可以非常方便地在浏览器历史记录中前进或后退,也可以获取浏览器的历史记录以及当前页面所处的位置。 history对象的使用 前进和后退 在history对象中,最基本的方法就是back…

    JavaScript 2023年5月27日
    00
  • JS数组方法some、every和find的使用详情

    JS数组方法some、every和find的使用详情 在 JavaScript 中,数组是一种常用的数据结构类型,而对于数组的操作,有三种常用的数组方法,它们分别是 some、every 和 find,本文将详细讲解它们的使用方法。 some方法 some 方法用于判断目标数组中是否存在至少一个元素满足指定的条件,如果满足则返回 true,如果不满足则返回 …

    JavaScript 2023年5月27日
    00
  • js内置对象处理_打印学生成绩单的简单实现

    下面将详细讲解“js内置对象处理_打印学生成绩单的简单实现”的完整攻略。 前置知识 在学习这个问题之前,你需要了解以下知识: JavaScript对象和数组的基础概念 for循环和while循环的基础使用方式 键值对的概念 代码的排版和注释 控制台输出console.log()的使用方法 如果你对以上概念不熟悉,建议先学习相关的基础教程。 问题描述 在这个问…

    JavaScript 2023年5月28日
    00
  • JS localStorage存储对象,sessionStorage存储数组对象操作示例

    JS localStorage 和 sessionStorage 都是 HTML5 新增的特性,它们都可以用来在浏览器端存储数据。其中 localStorage 存储的数据没有过期时间,而 sessionStorage 存储的数据在一次会话过程中有效,在用户关闭窗口或浏览器时会被清除。 存储对象示例 如果要存储一个对象到 localStorage 或 ses…

    JavaScript 2023年5月27日
    00
  • 微信小程序按钮点击动画效果的实现

    下面是关于“微信小程序按钮点击动画效果的实现”的完整攻略: 简介 在微信小程序中,用户交互体验至关重要。为了增强用户的交互体验,为小程序中按钮添加点击动画效果是非常必要的。本节将详细讲解如何实现一个简单的点击动画效果。 实现步骤 1.添加点击事件 首先,我们需要为按钮添加一个点击事件,这个很简单,只需要在 WXML 文件中绑定点击事件即可: <view…

    JavaScript 2023年6月11日
    00
  • 原生js实现日期选择插件

    关于“原生js实现日期选择插件”的攻略,我将从以下几个方面进行讲解。 一、日期选择插件基本功能 实现日期选择插件,首先需要了解它应该有哪些基本功能。通常包括以下几点: 显示当前日期,包括年、月、日; 能够选择特定日期,比如通过点击日历中的某个日期; 支持日期区间选择,即可以设置一个起始日期和一个结束日期; 根据日期变动显示对应的日历。 二、实现方式分析 日期…

    JavaScript 2023年5月27日
    00
  • JS实现电子时钟入门操作

    JS实现电子时钟是前端开发中一个常见的功能,下面我来为大家介绍一下实现步骤: 步骤一:创建HTML结构 首先需要建立html结构,在标签内添加一个 标签用来存放时钟显示的部分,同时还需要使用CSS样式对时钟进行美化。示例代码如下: <!DOCTYPE html> <html> <head> <meta charset…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部