美文网首页
浅谈JS浅拷贝&深拷贝

浅谈JS浅拷贝&深拷贝

作者: 小仙有毒_1991 | 来源:发表于2020-08-12 09:59 被阅读0次

深拷贝

方案一 :

 var deepCopy = function(obj) {
    let objClone = Array.isArray(obj)?[]:{};
    if(obj && typeof obj == 'object'){ 
      // 方案一
     //const keys = Object.keys(obj );
     //keys.map((key)=>{
     // 相关操作
     //});
     //方案二
      for( var i in obj){//所有可枚举的属性
        if(obj.hasOwnProperty(key)){//存在于实例上
           if(obj[key] && typeof obj[key] == 'object'){
             objClone[key] = deepCopy(obj[key])
           }else{
             objClone[key] = obj[key]; 
          }
       }
      }
    }
}


方案二:
用JSON.stringify转为字符串 再用JSON.parse把字符串再转为新的对象
注: RegExp对象,无法通过此方式深拷贝

浅拷贝

Es6的object.assign() 扩展运算符都是浅拷贝,拷贝的是对象的属性的引用,而不是对象本身

所以只能实现一层基本类型属性的拷贝
当obj1中属性是引用类型时,就会发现,修改其中一个属性值,另一个值也发生变化。
如下所示:

  let obj1 = {a: 1, b: { c: 2}}
  let obj2 = Object.assign({},obj1) // 或者 obj2 = {...obj1}

  obj2.b.c = 4
  console.log(obj1) //{ a: 1, b: { c: 4 } }

相关文章

  • JS中的深拷贝与浅拷贝

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

  • js浅拷贝深拷贝

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

  • 深拷贝和浅拷贝

    1: iOS开发 深拷贝与浅拷贝 2: iOS 浅谈:深.浅拷贝与copy.strong 3: iOS开发——深...

  • 浅拷贝和深拷贝

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

  • 浅谈JS浅拷贝&深拷贝

    深拷贝 方案一 : 方案二:用JSON.stringify转为字符串 再用JSON.parse把字符串再转为新的对...

  • copy和mutablecopy

    Objective-C中的浅拷贝和深拷贝 - CocoaChina_让移动开发更简单 iOS 浅谈:深.浅拷贝与c...

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

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

  • JS中对象的复制

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

  • iOS深拷贝(MutableCopy)与浅拷贝(Copy)的区别

    深拷贝和浅拷贝的概念 iOS中有深拷贝和浅拷贝的概念,那么何为深拷贝何为浅拷贝呢?浅拷贝:浅拷贝并不拷贝对象本身,...

  • 2020前端高频面试题总结(附答案)

    [ js基础题 ] 1. new的实现原理是什么? 2. 深拷贝和浅拷贝的区别是什么 深拷贝 浅拷贝 3. bin...

网友评论

      本文标题:浅谈JS浅拷贝&深拷贝

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