摘要:而堆內存主要負責像對象這種變量類型的存儲,如下圖引用類型中復制淺拷貝的只是棧內存中的指針,指向同一個堆內存的對象如何實現(xiàn)深拷貝最簡單的方法就是與方法
淺拷貝只會在引用類型中出現(xiàn)
基本數(shù)據(jù)類型有哪些,number,string,boolean,null,undefined,symbol以及未來ES10新增的BigInt(任意精度整數(shù))七類。
引用數(shù)據(jù)類型(Object類)有常規(guī)名值對的無序對象{a:1},數(shù)組[1,2,3],以及函數(shù)等。
首先看一下定義深拷貝:簡單來說假設B復制了A,當修改A時,B不發(fā)生變化
淺拷貝:簡單來說假設B復制了A,當修改A時,B也發(fā)生變化
let temp1 = { a: 1 } temp1 = temp2 temp2.a = 2 console.log(temp1.a) // 這里輸出2
也就是temp1 復制了 temp2,temp2的值改變了,temp1也隨之改變
以上是一個標準的淺拷貝
在js引擎中對變量的存儲主要有兩種位置,堆內存和棧內存。
和java中對內存的處理類似,棧內存主要用于存儲各種基本類型的變量,包括Boolean、Number、String、Undefined、Null,symbol以及對象變量的指針,這時候棧內存給人的感覺就像一個線性排列的空間,每個小單元大小基本相等。
而堆內存主要負責像對象Object這種變量類型的存儲,如下圖
引用類型中復制(淺拷貝)的只是棧內存中的指針,指向同一個堆內存的對象如何實現(xiàn)深拷貝
最簡單的方法就是JSON.stringify與JSON.parse方法
function deepClone(obj){ let _obj = JSON.stringify(obj), objClone = JSON.parse(_obj); return objClone }
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://www.ezyhdfw.cn/yun/109440.html
摘要:地址傳遞引用類型則是地址傳遞,將存放在棧內存中的地址賦值給接收的變量。即對象的淺拷貝會對主對象進行拷貝,但不會復制主對象里面的對象。 相關知識點 1.javascript變量包含兩種不同數(shù)據(jù)類型的值:基本類型和引用類型。 基本類型值指的是簡單的數(shù)據(jù)段,包括es6里面新增的一共是有6種,具體如下:number、string、boolean、null、undefined、symbol。 引...
摘要:中的深拷貝與淺拷貝說到深淺拷貝的時候就不得不說一下中的變量類型了基本類型按值存放在棧內存中的簡單數(shù)據(jù)段可以直接訪問引用類型存放在堆內存中的對象變量保存的是一個指向存放數(shù)據(jù)位置的指針訪問引用類型的值時首先從棧中獲取到存放該數(shù)據(jù)位置的指針然后再 JS中的深拷貝與淺拷貝 說到深淺拷貝的時候就不得不說一下JS中的變量類型了: 基本類型: undefined、null、boolean、numb...
摘要:引用數(shù)據(jù)類型名存在棧內存中,值存在于堆內存中,但是棧內存會提供一個引用的地址指向堆內存中的值,我們以上面淺拷貝的例子畫個圖當進行拷貝時,其實復制的是的引用地址,而并非堆里面的值。 如何區(qū)分深拷貝與淺拷貝? 簡單來說,就是假設B復制了A,當修改A時,看B是否會發(fā)生變化,如果B也跟著變了,說明這是淺拷貝,拿人手短,如果B沒變,那就是深拷貝,自食其力。 淺拷貝例子: var a=[0,1...
摘要:什么是深拷貝淺拷貝見名知義,無論是深拷貝還是淺拷貝,都是的問題。使用如下以上就是關于中的深拷貝與淺拷貝的知識和如何進行深拷貝的知識了,如果有錯或者有其他方式的話,歡迎在下面留言評論啦 前言 最近在寫項目的時候涉及到一些父子組件傳遞個對象或者數(shù)組通信啥的,或者是直接復制添加對象啥的,直接使用賦值的時候總會出錯。一查原來是淺拷貝的問題,就從網(wǎng)上找了點資料,匯總到這里來了。 1 什么是深拷貝...
摘要:深拷貝淺拷貝本文主要對深拷貝淺拷貝的解釋及實現(xiàn)做一下簡單記錄。之所以會有深拷貝與淺拷貝之分,是因為不同數(shù)據(jù)類型的數(shù)據(jù)在內存中的存儲區(qū)域不一樣。但注意,只能做一層屬性的淺拷貝。 深拷貝VS淺拷貝 本文主要對深拷貝&淺拷貝的解釋及實現(xiàn)做一下簡單記錄。原文鏈接,歡迎star。 之所以會有深拷貝與淺拷貝之分,是因為不同數(shù)據(jù)類型的數(shù)據(jù)在內存中的存儲區(qū)域不一樣。 堆和棧是計算機中劃分出來用來存儲的...
閱讀 2203·2021-11-24 10:34
閱讀 3168·2021-11-22 11:58
閱讀 3776·2021-09-28 09:35
閱讀 1791·2019-08-30 15:53
閱讀 2906·2019-08-30 14:11
閱讀 1622·2019-08-29 17:31
閱讀 617·2019-08-26 13:53
閱讀 2210·2019-08-26 13:45