js——浅拷贝和深拷贝

7,481次阅读
没有评论

共计 1713 个字符,预计需要花费 5 分钟才能阅读完成。

一、浅拷贝

浅拷贝:拷贝的是地址

常见方法:

1. 拷贝对象:0bject.assgin()/ 展开运算符 {…obj}拷贝对象

2. 拷贝数组:Array.prototype.concat()或者[…arr]

  

总结:

1. 直接赋值和浅拷贝有什么区别?

直接赋值的方法,只要是对象,都会相互影响,因为是直接拷贝对象栈里面的地址

浅拷贝如果是一层对象,不相互影响,如果出现多层对象拷贝还会相互影响

2. 浅拷贝怎么理解?

拷贝对象之后,里面的属性值是简单数据类型直接拷贝值

如果属性值是引用数据类型则拷贝的是地址

二、深拷贝

深拷贝:拷贝的是对象,不是地址

常见方法:

1. 通过递归实现深拷贝

2.lodash/cloneDeep

3. 通过 JSON.stringify()实现

下面介绍一下几种方法:

(1)利用递归

函数递归:
如果一个函数在内部可以调用其本身,那么这个函数就是递归函数

· 简单理解: 函数内部自己调用自己, 这个函数就是递归函数
·  递归函数的作用和循环效果类似
·  由于递归很容易发生“栈溢出”错误(stackoverflow),所以必须要加退出条件 

(2)利用 lodash:引入 js 库 lodash


  

(3)利用 JSON

总结:

实现深拷贝三种方式?

自己利用递归函数书写深拷贝

利用 js 库 lodash 里面的_.cloneDeep()

利用 JSON 字符串转换

原文地址: js——浅拷贝和深拷贝

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-10-07发表,共计1713字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)