国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

js中深拷貝與淺拷貝(堆內存、棧內存的關系)

AlienZHOU / 2140人閱讀

摘要:而堆內存主要負責像對象這種變量類型的存儲,如下圖引用類型中復制淺拷貝的只是棧內存中的指針,指向同一個堆內存的對象如何實現深拷貝最簡單的方法就是與方法

淺拷貝只會在引用類型中出現

基本數據類型有哪些,number,string,boolean,null,undefined,symbol以及未來ES10新增的BigInt(任意精度整數)七類。

引用數據類型(Object類)有常規名值對的無序對象{a:1},數組[1,2,3],以及函數等。

首先看一下定義

深拷貝:簡單來說假設B復制了A,當修改A時,B不發生變化
淺拷貝:簡單來說假設B復制了A,當修改A時,B也發生變化

實際情況能碰到
    
    let temp1 = {
        a: 1
    }
    temp1 = temp2
    temp2.a = 2
    console.log(temp1.a)  // 這里輸出2
    

也就是temp1 復制了 temp2,temp2的值改變了,temp1也隨之改變
以上是一個標準的淺拷貝

了解一下js中的堆內存與棧內存

在js引擎中對變量的存儲主要有兩種位置,堆內存和棧內存。

和java中對內存的處理類似,棧內存主要用于存儲各種基本類型的變量,包括Boolean、Number、String、Undefined、Null,symbol以及對象變量的指針,這時候棧內存給人的感覺就像一個線性排列的空間,每個小單元大小基本相等。

而堆內存主要負責像對象Object這種變量類型的存儲,如下圖

引用類型中復制(淺拷貝)的只是棧內存中的指針,指向同一個堆內存的對象
如何實現深拷貝

最簡單的方法就是JSON.stringify與JSON.parse方法

    function deepClone(obj){
        let _obj = JSON.stringify(obj),
            objClone = JSON.parse(_obj);
        return objClone
    }





文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/109440.html

相關文章

  • JS中深拷貝與淺拷貝

    摘要:地址傳遞引用類型則是地址傳遞,將存放在棧內存中的地址賦值給接收的變量。即對象的淺拷貝會對主對象進行拷貝,但不會復制主對象里面的對象。 相關知識點 1.javascript變量包含兩種不同數據類型的值:基本類型和引用類型。 基本類型值指的是簡單的數據段,包括es6里面新增的一共是有6種,具體如下:number、string、boolean、null、undefined、symbol。 引...

    ranwu 評論0 收藏0
  • JS拷貝與淺拷貝

    摘要:中的深拷貝與淺拷貝說到深淺拷貝的時候就不得不說一下中的變量類型了基本類型按值存放在棧內存中的簡單數據段可以直接訪問引用類型存放在堆內存中的對象變量保存的是一個指向存放數據位置的指針訪問引用類型的值時首先從棧中獲取到存放該數據位置的指針然后再 JS中的深拷貝與淺拷貝 說到深淺拷貝的時候就不得不說一下JS中的變量類型了: 基本類型: undefined、null、boolean、numb...

    ARGUS 評論0 收藏0
  • 面試篇---1 如何區分深拷貝與淺拷貝

    摘要:引用數據類型名存在棧內存中,值存在于堆內存中,但是棧內存會提供一個引用的地址指向堆內存中的值,我們以上面淺拷貝的例子畫個圖當進行拷貝時,其實復制的是的引用地址,而并非堆里面的值。 如何區分深拷貝與淺拷貝? 簡單來說,就是假設B復制了A,當修改A時,看B是否會發生變化,如果B也跟著變了,說明這是淺拷貝,拿人手短,如果B沒變,那就是深拷貝,自食其力。 淺拷貝例子: var a=[0,1...

    jsdt 評論0 收藏0
  • JS拷貝與淺拷貝

    摘要:什么是深拷貝淺拷貝見名知義,無論是深拷貝還是淺拷貝,都是的問題。使用如下以上就是關于中的深拷貝與淺拷貝的知識和如何進行深拷貝的知識了,如果有錯或者有其他方式的話,歡迎在下面留言評論啦 前言 最近在寫項目的時候涉及到一些父子組件傳遞個對象或者數組通信啥的,或者是直接復制添加對象啥的,直接使用賦值的時候總會出錯。一查原來是淺拷貝的問題,就從網上找了點資料,匯總到這里來了。 1 什么是深拷貝...

    ztyzz 評論0 收藏0
  • javascript拷貝VS淺拷貝

    摘要:深拷貝淺拷貝本文主要對深拷貝淺拷貝的解釋及實現做一下簡單記錄。之所以會有深拷貝與淺拷貝之分,是因為不同數據類型的數據在內存中的存儲區域不一樣。但注意,只能做一層屬性的淺拷貝。 深拷貝VS淺拷貝 本文主要對深拷貝&淺拷貝的解釋及實現做一下簡單記錄。原文鏈接,歡迎star。 之所以會有深拷貝與淺拷貝之分,是因為不同數據類型的數據在內存中的存儲區域不一樣。 堆和棧是計算機中劃分出來用來存儲的...

    Nekron 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<