美文网首页
js的深拷贝和浅拷贝

js的深拷贝和浅拷贝

作者: 白玩VAC | 来源:发表于2019-08-16 10:55 被阅读0次

浅拷贝

值类型数据保存在内存栈中,引用类型保存在内存堆中.浅拷贝是拷贝引用类型的指针,对于里面的具体数值没有拷贝.
1.直接给对象赋值

var a = {
  name:'Park',
  age:25
}

2.解构对象

var foo ={
  name:'Park',
  }
var bar ={
  age:25
}
var park = {...foo,...bar}

深拷贝

当拷贝来的对象不再只是原对象的一个指针,而是每个属性确确实实存在栈内存中,则为深拷贝了
1.JSON对象实现深拷贝
核心思路是把JSON转成字符串存入栈内存,再将字符串转为对象
注意:如果对象中包含方法则会被忽略.

function (obj){
   var obj = JSON.stringify(obj)
    return JSON.parse(obj)
}

Object.assign(target,source)
注意:第一层对象为深拷贝,第二层对象开始就是浅拷贝了

var foo ={
  name:'Park',
  }
var bar ={
  age:25
}
Object.assign(foo,bar)
  //foo  {name: "Park", age: 25}

3.递归实现深拷贝

function deepCopy(obj){
  var newobj = null
  if (typeof(obj) =='object'&&obj!==null){
    newobj = obj instanceof Array? []:{}
    for(var i in obj){
        newobj[i] = copy(obj[i])
      }
  }else{
    newobj = obj
  }
  return newobj
}

相关文章

  • JS中的深拷贝与浅拷贝

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

  • js浅拷贝深拷贝

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

  • 浅拷贝和深拷贝

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

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

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

  • JS中对象的复制

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

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

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

  • 通过jQuery中.extend()方法理解深拷贝

    所谓深拷贝和浅拷贝最大的区别就是js中有简单类型和引用类型的区分,对于简单类型不存在深拷贝和浅拷贝的区分,对于引用...

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

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

  • iOS面试题-第二页

    11.深拷贝和浅拷贝的理解. 深拷贝;拷贝的内容. 浅拷贝:拷贝的指针. 深拷贝如: NSMutableDicti...

  • iOS - copy 与 mutableCopy

    一说到拷贝,就不得不提浅拷贝和深拷贝。 何谓浅拷贝?何谓深拷贝? 往简单的说: 浅拷贝:拷贝地址。 深拷贝:拷贝内...

网友评论

      本文标题:js的深拷贝和浅拷贝

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