美文网首页
js中浅拷贝与深拷贝

js中浅拷贝与深拷贝

作者: 拖孩 | 来源:发表于2021-05-17 08:38 被阅读0次

浅拷贝

只拷贝第一层的原始类型值,和第一层的引用类型地址。

方式

  • 直接赋值
  • Object.assign()

深拷贝

拷贝所有的属性值,以及属性地址指向的值的内存空间

方式

  • 递归调用实现深拷贝-存在 引用丢失 问题
    function deepClone(obj) {
      if (!obj && typeof obj !== 'object'){
        return
      }
      var newObj = toString.call(obj) === '[object Array]' ? [] : {}
      for (var key in obj) {
        if (obj[key] && typeof obj[key] === 'object') {
          newObj[key] = deepClone(obj[key])
        } else {
          newObj[key] = obj[key]
        }
      }
      return newObj
    }
    
  • 使用JSON方式-无法实现对象中 方法 的深拷贝
    const obj = { a: 1, b: 2, c: 3 }
    const newObj = JSON.parse(JSON.stringify(obj))
    newObj.a = 4
    console.log(obj) // { a: 1, b: 2, c: 3 }
    console.log(newObj) // { a: 4, b: 2, c: 3 }
    

相关文章

  • JS中的深拷贝与浅拷贝

    知乎:js中的深拷贝和浅拷贝? 掘金: js 深拷贝 vs 浅拷贝 前言 首先深拷贝与浅拷贝只针对 Object,...

  • 浅拷贝和深拷贝

    本文参考:JavaScript中的浅拷贝和深拷贝js 深拷贝 vs 浅拷贝深入剖析 JavaScript 的深复制...

  • js浅拷贝深拷贝

    js浅拷贝,深拷贝的简单实现 基础数据 浅拷贝 深拷贝

  • JS实现深拷贝、instanceof、判断是否为数组

    JS深拷贝 JS中拷贝对象可以按照拷贝的程度可以分为浅拷贝和深拷贝,有些时候我们需要拷贝之后的对象和拷贝之前的对象...

  • JS中对象的复制

    JS中的对象复制分为两种情况:深拷贝和浅拷贝。深拷贝和浅拷贝的区别在于对数组和对象的拷贝,对它们拷贝时浅拷贝只是拷...

  • Objective-C中的浅拷贝和深拷贝

    Objective-C中的浅拷贝和深拷贝IOS开发之深拷贝与浅拷贝(mutableCopy与Copy)详解iOS ...

  • js面试题

    1,js的深拷贝与浅拷贝 如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,...

  • js中浅拷贝与深拷贝

    浅拷贝 只拷贝第一层的原始类型值,和第一层的引用类型地址。 方式 直接赋值 Object.assign() 深拷贝...

  • Objective-C中的浅拷贝和深拷贝

    Objective-C中的浅拷贝和深拷贝 Objective-C中的浅拷贝和深拷贝

  • C++封装(二)

    第2章 对象成员与对象数组 第3章 深拷贝与浅拷贝 浅拷贝: 深拷贝: 第4章 对象指针 对象指针: 栈中: 对象...

网友评论

      本文标题:js中浅拷贝与深拷贝

      本文链接:https://www.haomeiwen.com/subject/ynjkjltx.html