自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Javascript中的深拷貝和淺拷貝

開(kāi)發(fā) 前端
數(shù)據(jù)復(fù)制是我們編程中經(jīng)常會(huì)使用到的技術(shù),對(duì)于普通數(shù)值數(shù)據(jù)來(lái)說(shuō),復(fù)制很簡(jiǎn)單,但是對(duì)于復(fù)雜類型比如對(duì)象的復(fù)制,就會(huì)有很多需要考慮的東西,比如我們經(jīng)常說(shuō)到的深拷貝和淺拷貝。

數(shù)據(jù)復(fù)制是我們編程中經(jīng)常會(huì)使用到的技術(shù),對(duì)于普通數(shù)值數(shù)據(jù)來(lái)說(shuō),復(fù)制很簡(jiǎn)單,但是對(duì)于復(fù)雜類型比如對(duì)象的復(fù)制,就會(huì)有很多需要考慮的東西,比如我們經(jīng)常說(shuō)到的深拷貝和淺拷貝。

[[411723]]

淺拷貝

復(fù)制的對(duì)象和原始對(duì)象屬性相關(guān)聯(lián)。事實(shí)上,如果對(duì)象的任何字段被其他對(duì)象引用,則它們共享相同的內(nèi)存地址。

深拷貝

與淺拷貝不同,深拷貝復(fù)制對(duì)象的所有屬性,并且為新對(duì)象分配新的內(nèi)存地址,我們對(duì)新對(duì)象的操作不會(huì)影響到原對(duì)象,看起來(lái)就像是將原對(duì)象所有的東西都重新復(fù)制出來(lái)一份。

數(shù)據(jù)類型

JavaScript中的數(shù)據(jù)類型分為原始數(shù)據(jù)類型和復(fù)合數(shù)據(jù)類型。

數(shù)值,字符串,布爾值,undefined,null為原始數(shù)據(jù)類型,而數(shù)組和對(duì)象則是復(fù)合類型。

原始數(shù)據(jù)進(jìn)行復(fù)制克隆的時(shí)候,永遠(yuǎn)都是新的副本,不會(huì)和原來(lái)數(shù)據(jù)進(jìn)行關(guān)聯(lián),而復(fù)合數(shù)據(jù)進(jìn)行淺拷貝的時(shí)候,只是分配值的引用。

創(chuàng)建深拷貝

對(duì)于克隆對(duì)象,如果我們想要進(jìn)行深拷貝,那么我們經(jīng)常使用的方法就是JSON.parse()和JSON.stringify()。

數(shù)組Map,ForEach和Slice

對(duì)于普通的一維數(shù)組,函數(shù)Map,ForEach,Slice都提供深拷貝的功能,但是對(duì)于嵌套數(shù)組,這些函數(shù)對(duì)于內(nèi)部數(shù)組的處理不提供深拷貝的功能。

總結(jié)

Object.assign和Object.create都可以進(jìn)行對(duì)象的復(fù)制。

使用assign方法時(shí),我們必須確保對(duì)象至少?gòu)?fù)制第二個(gè)參數(shù)。通常你只會(huì)傳遞一個(gè)空對(duì)象作為第一個(gè)參數(shù)。它不提供類似于擴(kuò)展運(yùn)算符的完整拷貝。

使用create方法時(shí),現(xiàn)有對(duì)象作為新創(chuàng)建對(duì)象的原型創(chuàng)建一個(gè)新對(duì)象?,F(xiàn)有對(duì)象作為原型可用,從而使所有屬性都可用于新對(duì)象。但就復(fù)制而言,它提供了部分深復(fù)制,如分配和擴(kuò)展運(yùn)算符。

在 JavaScript 中復(fù)制對(duì)象的唯一陷阱是嵌套值。

責(zé)任編輯:趙寧寧 來(lái)源: 今日頭條
相關(guān)推薦

2018-09-26 14:37:17

JavaScript前端編程語(yǔ)言

2020-10-12 08:35:22

JavaScript

2018-05-10 14:20:18

前端JavaScript深拷貝

2017-08-16 13:30:05

Java深拷貝淺拷貝

2009-05-19 17:28:44

深拷貝淺拷貝clone()

2023-05-17 08:42:46

深拷貝Golang

2025-04-27 09:45:58

JavaScript深拷貝淺拷貝

2020-06-23 08:41:47

JavaScript開(kāi)發(fā)技術(shù)

2021-09-27 11:07:11

深拷貝淺拷貝內(nèi)存

2022-07-26 08:07:03

Python淺拷貝深拷貝

2017-05-24 11:54:55

Javascript深拷貝

2024-04-17 09:01:08

Python深拷貝淺拷貝

2020-08-03 08:24:26

原型模式拷貝

2021-01-08 06:15:09

深拷貝淺拷貝寫(xiě)時(shí)拷貝

2022-09-30 15:03:09

C語(yǔ)言深拷貝淺拷貝

2024-02-05 22:56:16

C++拷貝開(kāi)發(fā)

2024-03-15 15:03:23

2023-05-17 07:36:00

淺拷貝深拷貝對(duì)象

2023-09-22 12:21:33

Python深拷貝淺拷貝

2023-05-08 09:00:46

JSON深拷貝對(duì)象
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)