偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Javascript中的深拷貝和淺拷貝

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

數(shù)據復制是我們編程中經常會使用到的技術,對于普通數(shù)值數(shù)據來說,復制很簡單,但是對于復雜類型比如對象的復制,就會有很多需要考慮的東西,比如我們經常說到的深拷貝和淺拷貝。

[[411723]]

淺拷貝

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

深拷貝

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

數(shù)據類型

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

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

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

創(chuàng)建深拷貝

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

數(shù)組Map,ForEach和Slice

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

總結

Object.assign和Object.create都可以進行對象的復制。

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

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

在 JavaScript 中復制對象的唯一陷阱是嵌套值。

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2018-09-26 14:37:17

JavaScript前端編程語言

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開發(fā)技術

2021-09-27 11:07:11

深拷貝淺拷貝內存

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

深拷貝淺拷貝寫時拷貝

2022-09-30 15:03:09

C語言深拷貝淺拷貝

2024-02-05 22:56:16

C++拷貝開發(fā)

2024-03-15 15:03:23

2023-05-17 07:36:00

淺拷貝深拷貝對象

2023-09-22 12:21:33

Python深拷貝淺拷貝

2023-05-08 09:00:46

JSON深拷貝對象
點贊
收藏

51CTO技術棧公眾號