美文网首页
对象的深拷贝

对象的深拷贝

作者: JarvanZ | 来源:发表于2018-03-21 23:39 被阅读0次

数组的深拷贝

  • 遍历数组赋值给一个新的数组
  • Array.prototype.slice
    将原数组中抽离部分出来形成一个新数组作为返回值
  • Array.prototype.concat
    用于连接多个数组组成一个新的数组作为返回值
  • 使用ES6拓展运算符

对象的深拷贝

  • 序列化对象然后再解析该json字符串
  • 使用ES6拓展运算符
  • 使用递归遍历对象键值对赋值给一个新的对象
1.
function deepCopy(obj) {
    let newObj = {}
    for(let item in obj) {
          if(Object.prototype.toString.call(obj) == '[object Object]') {
              deepCopy(item)
          }else {
              newObj[item] = obj[item]    
          }
    }
    return newObj 
}
2.
function deeCopy(obj) {
    if(typeof obj != 'object') {
        return obj
    }
    let newObj = {}
    for(let item in obj) {
        newObj[item] = deepCopy(obj[item])
    }
    return newObj
}
  • Object.create
    第一个参数是新建对象的原型,第二个参数可选,将第二个参数自身拥有的可枚举的属性复制到新建的对象中
  • Object.assgin
    第一个参数是目标参数,而后的所有参数都是源对象
    源对象上某个属性的值是对象,注意,这里目标对象复制得到的是这个属性值对象的引用.而且只能拷贝源对象上自身的值,不能拷贝继承的值以及原型上的值.

相关文章

  • 2018-10-10函数基础

    深拷贝和浅拷贝 深拷贝 copy.deepcopy(对象)浅拷贝 copy.copy(对象)深拷贝: 将对象对应的...

  • java 对象的拷贝

    拷贝:即复制 对象拷贝:即对象复制 java 对象拷贝分类:浅拷贝、深拷贝 java 对象的浅拷贝和深拷贝针对包含...

  • 前端笔记(二) 对象的深浅拷贝,函数的防抖与节流,函数柯里化 ,

    对象的深浅拷贝 对象的深拷贝与浅拷贝的区别: 浅拷贝:仅仅复制对象的引用, 而不是对象本身。 深拷贝:把复制的对象...

  • 深浅拷贝,面向对象,Symbol,Set,Map

    一:浅拷贝与深拷贝对象的浅拷贝:浅拷贝是对象共用的一个内存地址,对象的变化相互影响。对象的深拷贝:简单理解深拷贝是...

  • 深拷贝和浅拷贝不同

    浅拷贝:指针(地址)拷贝,不会产生新对象深拷贝:内容拷贝,会产生新对象 非容器类对象的深拷贝、浅拷贝 非容器类对象...

  • 2018-10-10day9函数基础

    1.浅拷贝、深拷贝 copy.copy(对象):浅拷贝copy.deepcopy(对象):深拷贝""" """拷贝...

  • iOS - copy与mutableCopy

    浅拷贝与深拷贝 浅拷贝:指针拷贝,不产生新的对象,源对象的引用计数器+1 深拷贝:对象拷贝,会产生新的对象,源对象...

  • 面试题iOS

    面试blog 1、深拷贝浅拷贝:浅拷贝就是拷贝对象的指针,而不复制引用对象本身;深拷贝就是拷贝引用对象本身;浅复制...

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

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

  • 深拷贝浅拷贝

    1.拷贝可变对象 深拷贝后浅拷贝可变对象,都是内存复制。 输出结果: 2.拷贝不可变对象 浅拷贝是指针拷贝,深拷贝...

网友评论

      本文标题:对象的深拷贝

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