js深拷贝与浅拷贝 ,js对象深拷贝的最好的方法

本文目录

js对象深拷贝的最好的方法


1、首先可以通过Object.assign来解决这个问题,很多人认为这个函数是用来深拷贝的。其实并不是,Object.assign只会拷贝所有的属性值到新的对象中,如果属性值是对象的话,拷贝的是地址,所以并不是深拷贝。
2、还可以通过展开运算符...来实现浅拷贝
let a = {age: 1}
let b = { ...a }
a.age = 2
console.log(b.age) // 1

js深拷贝与浅拷贝
,js对象深拷贝的最好的方法图1

前端 深拷贝和浅拷贝的异同点



  • 浅拷贝:浅拷贝是拷贝引用,拷贝后的引用都是指向同一个对象的实例,彼此之间的操作会互相影响


  • 深拷贝:在堆中重新分配内存,并且把源对象所有属性都进行新建拷贝,以保证深拷贝的对象的引用图不包含任何原有对象或对象图上的任何对象,拷贝后的对象与原来的对象是完全隔离,互不影响



js深拷贝与浅拷贝
,js对象深拷贝的最好的方法图2

什么是深拷贝和浅拷贝python


浅拷贝就是指对象复制的时候只复制一层;深拷贝是指复制对象的所有层级。


深拷贝和浅拷贝,主要是对象发生复制的时候,根据复制的层级不同来区分的。很多人在这里经常变量赋值发生混淆。对于Javascript数组等复杂的数据类型来说,将其赋值给其它变量,其实只是复制了对象的地址给它,两个变量指向的是同一个对象,因此普通的赋值既不是深拷贝也不是浅拷贝。


js深拷贝与浅拷贝
,js对象深拷贝的最好的方法图3


深拷贝和浅拷贝需要注意的地方就是可变元素的拷贝:


在浅拷贝时,拷贝出来的新对象的地址和原对象是不一样的,但是新对象里面的可变元素(如列表)的地址和原对象里的可变元素的地址是相同的,也就是说浅拷贝它拷贝的是浅层次的数据结构(不可变元素),对象里的可变元素作为深层次的数据结构并没有被拷贝到新地址里面去。


而是和原对象里的可变元素指向同一个地址,所以在新对象或原对象里对这个可变元素做修改时,两个对象是同时改变的,但是深拷贝不会这样,这个是浅拷贝相对于深拷贝最根本的区别。


浅拷贝和深拷贝的区别


一.深拷贝



  1. 源对象和副本对象是不一样的两个对象。


  2. 源对象引用计数不变,副本对象计数器为1(因为是新产生的)。


  3. 至少有一层是对象复制。



二.浅拷贝



  1. 源对象和副本对象是同样的对象。


  2. 源对象(副本对象)引入计数器+1,等同于做一次retain的操作。


  3. 本质:没有生产新的对象。



从整体上来讲,深拷贝和浅拷贝的不同地方主要还是在于指针(或与指针)方面,浅拷贝仅仅是简易的将源对象(这里是指广义的对象,不只是单指类的实例)的指针赋值给目标对象,对目标指针的操作就是对源对象的操作,因此在大部分情况下,目标对象析构(或跳出其可见域)之后,源对象相关部分也就一同析构了。而深拷贝,是为目标对象重新分配空间,这样就能够和源对象的操作区分。


js深拷贝与浅拷贝
,js对象深拷贝的最好的方法图4

以上就是关于js深拷贝与浅拷贝 ,js对象深拷贝的最好的方法的全部内容,以及js深拷贝与浅拷贝 的相关内容,希望能够帮到您。

上一篇 2022年09月14日12时20分54秒
下一篇 2022年09月14日12时35分51秒

相关推荐

  • 各种动物的叫声英文 ,喵的叫声用英语怎么说

    本文目录 1.喵的叫声用英语怎么说 2.25种动物叫声用英语怎么说写 3.模仿动物的叫声用英语怎么说 4.用英语怎么说吃晚饭 喵的叫声用英语怎么说 英语也有拟声词这种虚词,即模拟声音的字,如: mew 喵 woof 汪 baa 咩 quack 嘎 oink 哼(猪叫声) 希望我能帮助你解疑释惑。 25种动物叫声用英语怎么说写 1、bray:(驴等的)叫声 bray英[breɪ]美[breɪ] v. (驴子)嘶叫;以刺耳的高声讲话(或笑); n.驴叫声,似驴叫的声音;(喇叭的)嘟嘟声; [例句]The donkey brayed and tried to bolt. 这头驴嘶叫着试图脱缰而逃。 …

    2022年07月24日
    16
  • 动词折叠的过去式 ,英语动词变成过去式的五种方法例句

    本文目录 1.英语动词变成过去式的五种方法例句 2.born的过去式和过去分词是什么 3.动词变过去式的几种形式 4.动词的过去式是什么意思 英语动词变成过去式的五种方法例句 1、一般情况下,直接加ed play——played look——looked watch——watched 2、以不发音的 -e 结尾动词,动词词尾加 -d move——moved hope——hoped use——used 3、以辅音字母 + y结尾的动词,把-y变为-i 再加-ed study——studied carry——carried cry——cried 4、以元音字母+y结尾的,直接加ed enjoy —…

    2022年07月23日
    16
  • 5篇简短的英语新闻稿 ,跪英语新闻稿要一周内的、有中文翻译、一定要短、网址也写一下_百...

    本文目录 1.跪英语新闻稿要一周内的、有中文翻译、一定要短、网址也写一下 2.2分钟英语新闻稿带翻译 3.英语时事短篇新闻3分钟 4.简单的英语新闻稿带翻译 跪英语新闻稿要一周内的、有中文翻译、一定要短、网址也写一下 According to the Foxnews, painful memories of people could be erased from their mind by a new medical technology, a research made by Johns Hopkins University suggests. 据国外网站“the Foxnews”报道,约翰…

    2022年07月24日
    16
  • 去过许多城市用英语怎么说 ,我的叔叔在一艘大船上工作他乘船去过许多城市

    本文目录 1.我的叔叔在一艘大船上工作他乘船去过许多城市 2.我去过中国的很多地方英文翻译 3.我去过杭州西湖的英文 4.我住在中国南方的一个城市英文 我的叔叔在一艘大船上工作他乘船去过许多城市 我的叔叔在大船上工作,他去过很多城市的英语: My uncle works on a big ship. He has been to many cities 我去过中国的很多地方英文翻译 英语:I have been to many cities in China 重点词汇释义 去过been 很多a great many; a great deal of; a large number of; pl…

    2022年07月23日
    16
  • usedacomputer ,怎样正确使用电脑英语作文带翻译

    本文目录 1.怎样正确使用电脑英语作文带翻译 2.when do you use a computer英语作文 3.he often 什么after work 4.jack wolfskin 怎样正确使用电脑英语作文带翻译 How to Use Computer Properly Computer becomes much popular this century. In schools, factories and office buildings, computers help people to do many works and bring more advantages, they …

    2022年07月23日
    16
  • therewillbe句型用法总结 ,明天期中考试英语怎么说

    本文目录 1.明天期中考试英语怎么说 2.there will be后面加什么词性 3.用there will be造句未来 4.there will be句型一般疑问回答 明天期中考试英语怎么说 There wil be a meeting tomorrow morning. 我们都知道 "There be" 后面可跟一个名词或动名词,请看下面例句: 1. There is a shop at the corner, where you can buy fruits. 在拐角处有家商店,你可以在那里买水果。 2. There is no knowing what may happen tom…

    2022年07月23日
    16
  • watching tv是什么词性 ,watch TV是动词还是名词

    本文目录 1.watch TV是动词还是名词 2.watching tv是动词吗 3.watches TV和watch TV的区别 4.He likes watching TV是什么时态 watch TV是动词还是名词 TV不是抽象名词,可数。 watching tv是动词吗 watching是watch的动名词形式。 造句:I watching TV now! 这个句子则是一般现在时的时态。 另外,想要区分现在分词和动名词只要记住一般如果句子是现在进行时这个时态的话就动词要用现在分词形式了!动名词是一种兼有动词和名词特征的非限定动词。它可以支配宾语,也能被副词修饰。动名词有时态和语态的变化。…

    英语知识 2022年07月23日
    11
  • 书虫英语单词大全0000个 ,英语书虫中的好词好句

    本文目录 1.英语书虫中的好词好句 2.书虫·牛津英汉对照读物的好词好句英文 3.英语书虫系列书籍好词好句 4.书虫系列英语300个单词 英语书虫中的好词好句 1.However mean your life is, meet it and live it; do not shun it and call it hard names. 不论你的生活如何卑贱,你要面对它生活,不要躲避它,更别用恶言咒骂它。 2.It is not so bad as you are. 它不像你那样坏。 7.The setting sun is reflected from the windows of the a…

    2022年07月23日
    16