首页 > 编程语言 >JavaScript深拷贝与浅拷贝

JavaScript深拷贝与浅拷贝

时间:2024-09-28 19:45:21浏览次数:1  
标签:stringify cloneDeep 实现 JavaScript 拷贝 assign

由于对象采用的是引用赋值。所以直接用“=”,修改属性的时候也会将原来的变量改变掉。

因此,就有了浅拷贝与深拷贝

用{...obj}和object.assign表示浅拷贝,其只拷贝外围对象的一层,而不会拷贝多层。

 方法二:使用Object.assign

 

 深拷贝的实现

其一是通过递归实现拷贝。其二lodash的cloneDeep 其三是通过JSON.stringify()实现

 

标签:stringify,cloneDeep,实现,JavaScript,拷贝,assign
From: https://www.cnblogs.com/yansunda/p/18438069

相关文章

  • JavaScript 条件循环语句
    ‌条件循环语句‌是编程中的一种控制结构,它允许程序根据特定条件重复执行一段代码,直到满足某个条件为止。这种结构通常包括条件语句和循环语句,它们共同作用,使得程序能够根据预设的条件来决定是否继续执行循环体中的代码。for循环:适用场景:当知道循环次数时(循环次数已知)。特......
  • javascript 数组对象解构
    传统的写法不好记忆,书写麻烦,此时可以使用结构赋值的方法让代码更加简洁。数组结构是将数组中的单元值快速批量赋值给一系列变量的简介语法。变量的顺序对应数组单元值位置一次进行赋值操作。如下:应用一:交换两个变量Js前面有那种情况需要加分号。(不加分号解析器认为和上......
  • Javascript编译原理
    JavaScript的编译原理是一个复杂但有序的过程,主要涉及分词(词法分析)、解析(语法分析)、代码生成以及执行等阶段。以下是对JavaScript编译原理的详细解析:chrome编译流程 1.分词(词法分析)分词(Tokenizing)或词法分析(Lexing)是编译过程的第一步。在这个阶段,编译器将输入的源代码......
  • Javascript 一题搞懂 var 变量提升 & 函数声明提升!
    前置知识:在JavaScript中,“变量提升”(Hoisting)是指在代码执行之前,变量和函数声明会被提升到其所在作用域的顶部。对于使用var关键字声明的变量,会发生变量提升现象。一、声明提升1.变量声明提升:无论var变量在代码中的何处声明,它都会被提升到其所在的函数作用域......
  • 事件【JavaScript】
    1.事件事件是用户或浏览器动作的表示,JavaScript中的一切交互都是通过事件来处理的。2. 事件冒泡(EventBubbling)事件冒泡是指事件从最具体的元素(即触发事件的元素)开始触发,然后逐级向上传播到较为不具体的元素(即该元素的父元素、祖先元素),直到到达最顶层的元素(通常是documen......
  • JavaScript 网页设计案例详解( 最新技术趋势)
    前言随着JavaScript生态系统的不断发展和浏览器支持的不断完善,2024年的前端开发技术已经变得更加现代化和高效。JavaScript在网页设计中的应用不再局限于基础的交互,它与最新的Web标准、API结合,为开发者带来了丰富的功能和出色的性能优化。本文将通过一个网页设计案例,结......
  • JavaScript 闭包
    什么是闭包?简单理解:闭包=内层函数+外层函数的变量。正如前面所说的作用域链也会涉及到闭包,如下:leta=6;//全局作用域functionf(){a=7;//父级作用域functiond(){a=8;//自己的作用域console.log(a);}d();}f(); 闭包的官方......
  • JavaScript 网页设计经典案例代码全览
    一、响应式导航栏HTML结构:<nav><!--这是一个导航栏的容器--><divclass="logo">YourLogo</div><!--用于显示logo的div元素--><divclass="menu-icon">&#9776;</div><!--显示菜单图标(通常用于触发菜单的显示/隐藏)-->......
  • JavaScript 变量的作用域链
    作用域链本质上就是使用的是哪个变量,全局变量,局部变量,自身的变量。这个在看别人代码的逻辑的时候非常有用,底层是变量的查找机制。嵌套关系的作用域窜连起来形成了作用域链在函数被执行,会优先查找当前函数作用域中的变量。如果当前函数作用域找不到,则会逐级查找父级作用域,知道......
  • JavaScript null和0和undefined的比较
    null和0和undefined的比较alert(null>0); //(1)falsealert(null==0);//(2)falsealert(null>=0);//(3)true注意:这是因为相等性检查 == 和普通比较符 ><>=<= 的代码逻辑是相互独立的。进行值的比较时,null 会被转化为数字,因此它被转化为了 0。这就是为......