成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

js中深拷貝與淺拷貝(堆內(nèi)存、棧內(nèi)存的關(guān)系)

AlienZHOU / 2195人閱讀

摘要:而堆內(nèi)存主要負(fù)責(zé)像對(duì)象這種變量類型的存儲(chǔ),如下圖引用類型中復(fù)制淺拷貝的只是棧內(nèi)存中的指針,指向同一個(gè)堆內(nèi)存的對(duì)象如何實(shí)現(xiàn)深拷貝最簡(jiǎn)單的方法就是與方法

淺拷貝只會(huì)在引用類型中出現(xiàn)

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

引用數(shù)據(jù)類型(Object類)有常規(guī)名值對(duì)的無(wú)序?qū)ο髙a:1},數(shù)組[1,2,3],以及函數(shù)等。

首先看一下定義

深拷貝:簡(jiǎn)單來(lái)說(shuō)假設(shè)B復(fù)制了A,當(dāng)修改A時(shí),B不發(fā)生變化
淺拷貝:簡(jiǎn)單來(lái)說(shuō)假設(shè)B復(fù)制了A,當(dāng)修改A時(shí),B也發(fā)生變化

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

也就是temp1 復(fù)制了 temp2,temp2的值改變了,temp1也隨之改變
以上是一個(gè)標(biāo)準(zhǔn)的淺拷貝

了解一下js中的堆內(nèi)存與棧內(nèi)存

在js引擎中對(duì)變量的存儲(chǔ)主要有兩種位置,堆內(nèi)存和棧內(nèi)存。

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

而堆內(nèi)存主要負(fù)責(zé)像對(duì)象Object這種變量類型的存儲(chǔ),如下圖

引用類型中復(fù)制(淺拷貝)的只是棧內(nèi)存中的指針,指向同一個(gè)堆內(nèi)存的對(duì)象
如何實(shí)現(xiàn)深拷貝

最簡(jiǎn)單的方法就是JSON.stringify與JSON.parse方法

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





文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/109440.html

相關(guān)文章

  • JS中深拷貝與淺拷貝

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

    ranwu 評(píng)論0 收藏0
  • JS拷貝與淺拷貝

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

    ARGUS 評(píng)論0 收藏0
  • 面試篇---1 如何區(qū)分深拷貝與淺拷貝

    摘要:引用數(shù)據(jù)類型名存在棧內(nèi)存中,值存在于堆內(nèi)存中,但是棧內(nèi)存會(huì)提供一個(gè)引用的地址指向堆內(nèi)存中的值,我們以上面淺拷貝的例子畫個(gè)圖當(dāng)進(jìn)行拷貝時(shí),其實(shí)復(fù)制的是的引用地址,而并非堆里面的值。 如何區(qū)分深拷貝與淺拷貝? 簡(jiǎn)單來(lái)說(shuō),就是假設(shè)B復(fù)制了A,當(dāng)修改A時(shí),看B是否會(huì)發(fā)生變化,如果B也跟著變了,說(shuō)明這是淺拷貝,拿人手短,如果B沒(méi)變,那就是深拷貝,自食其力。 淺拷貝例子: var a=[0,1...

    jsdt 評(píng)論0 收藏0
  • JS拷貝與淺拷貝

    摘要:什么是深拷貝淺拷貝見(jiàn)名知義,無(wú)論是深拷貝還是淺拷貝,都是的問(wèn)題。使用如下以上就是關(guān)于中的深拷貝與淺拷貝的知識(shí)和如何進(jìn)行深拷貝的知識(shí)了,如果有錯(cuò)或者有其他方式的話,歡迎在下面留言評(píng)論啦 前言 最近在寫項(xiàng)目的時(shí)候涉及到一些父子組件傳遞個(gè)對(duì)象或者數(shù)組通信啥的,或者是直接復(fù)制添加對(duì)象啥的,直接使用賦值的時(shí)候總會(huì)出錯(cuò)。一查原來(lái)是淺拷貝的問(wèn)題,就從網(wǎng)上找了點(diǎn)資料,匯總到這里來(lái)了。 1 什么是深拷貝...

    ztyzz 評(píng)論0 收藏0
  • javascript拷貝VS淺拷貝

    摘要:深拷貝淺拷貝本文主要對(duì)深拷貝淺拷貝的解釋及實(shí)現(xiàn)做一下簡(jiǎn)單記錄。之所以會(huì)有深拷貝與淺拷貝之分,是因?yàn)椴煌瑪?shù)據(jù)類型的數(shù)據(jù)在內(nèi)存中的存儲(chǔ)區(qū)域不一樣。但注意,只能做一層屬性的淺拷貝。 深拷貝VS淺拷貝 本文主要對(duì)深拷貝&淺拷貝的解釋及實(shí)現(xiàn)做一下簡(jiǎn)單記錄。原文鏈接,歡迎star。 之所以會(huì)有深拷貝與淺拷貝之分,是因?yàn)椴煌瑪?shù)據(jù)類型的數(shù)據(jù)在內(nèi)存中的存儲(chǔ)區(qū)域不一樣。 堆和棧是計(jì)算機(jī)中劃分出來(lái)用來(lái)存儲(chǔ)的...

    Nekron 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<