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日

相关文章

  • 前端进阶之教你利用javascript存储函数

    那么我们来详细讲解“前端进阶之教你利用javascript存储函数”的完整攻略。 什么是javascript函数? Javascript函数是一种可重复使用的任务或计算机操作。使用函数可以将大块的JS代码封装到可重用的模块,从而可以更加方便地进行重用和维护。下面我们来看具体的实现过程。 javascript如何存储函数? 在Javascript中,可以通过将…

    JavaScript 2023年5月27日
    00
  • JQuery实现ajax请求的示例和注意事项

    当使用jQuery实现ajax请求时,可以通过调用jQuery的ajax()方法发送HTTP请求,并通过该方法提供的参数进行配置。以下是实现ajax请求的示例和注意事项: 示例一:发送GET请求 $.ajax({ url: ‘/api/data’, // 请求的API地址 type: ‘GET’, // 请求方法为GET dataType: ‘json’, …

    JavaScript 2023年6月11日
    00
  • ES2020 新特性(种草)

    ES2020 新特性(种草) ES2020是ECMAScript标准的最新版本。此版本包含了许多新特性,使得JavaScript开发更加方便和高效。本篇攻略将介绍ES2020中的新特性。 1. 可选链操作符(?.) 通常情况下,在使用对象属性或方法之前,需要先检查该对象是否存在。比如: if (obj && obj.prop) { // do…

    JavaScript 2023年5月28日
    00
  • JavaScript高级程序设计(第3版)学习笔记7 js函数(上)

    JavaScript高级程序设计(第3版)学习笔记7 js函数(上) 函数的定义 在JavaScript中,函数可通过以下方式定义: function functionName(arg0, arg1, …, argN) { statements } 其中,函数名使用驼峰式命名规则,而参数则由逗号隔开。函数的函数体由一对花括号({…})括起来,其中包含函数…

    JavaScript 2023年5月27日
    00
  • JS防抖和节流实例解析

    JS防抖和节流实例解析 什么是防抖和节流? 在介绍防抖和节流实例前,我们先了解一下这两个概念。防抖和节流都是为了解决高频触发某个函数而导致资源占用过多的问题。 防抖:指触发事件后在n秒内函数只执行一次,如果n秒内再次触发事件,则会重新计算函数的执行时间。 节流:指连续触发事件但是在n秒内只执行一次函数,所以节流会稀释函数的执行频率。 防抖的例子 搜索框实时搜…

    JavaScript 2023年6月11日
    00
  • JavaScript中的正则表达式使用及验证qq号码的正则

    正则表达式是一种强大的匹配模式,它在JavaScript中得到了广泛使用。对于开发者来说,掌握正则表达式的使用和验证方法是非常重要的。本文将从JavaScript中的正则表达式基础开始,讲解如何使用正则表达式进行qq号码的验证。 正则表达式基础 正则表达式是一种字符串匹配模式。在JavaScript中,它是通过RegExp对象来创建的。正则表达式由一个模式和…

    JavaScript 2023年6月10日
    00
  • javascript实现视频弹幕效果(两个版本)

    Javascript实现视频弹幕效果攻略 1. 引言 弹幕是指用户在观看视频时,能够发送一些评论消息,这些评论消息会以滚动、飘动、静态等形式浮现在视频画面上方。在现在各大视频平台上,弹幕已成为视频观看的一种重要要素。 本篇攻略将从两个版本的弹幕效果的具体实现入手,来详细讲解JavaScript实现弹幕效果的过程。 2. 版本一 2.1 函数封装 本案例中主要…

    JavaScript 2023年6月10日
    00
  • JS实现可用滑块滑动的缓动图代码

    下面是详细讲解“JS实现可用滑块滑动的缓动图代码”的攻略: 1. 引入JavaScript库 首先需要引入JavaScript库,包括jQuery和TweenMax。jQuery是一款非常流行的JavaScript库,它提供了各种各样的DOM操作和事件处理方法,而TweenMax是一款动画库,可以很方便地实现各种动画效果。 2. 设置HTML元素 接下来需要…

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