<div id="q0ue2"></div>
  • <table id="q0ue2"></table>
  • <wbr id="q0ue2"></wbr>
    <div id="q0ue2"><acronym id="q0ue2"></acronym></div>
  • 咨詢電話:
    15628812133
    15
    2023/09

    深拷貝淺拷貝的介紹及其實現方式

    發布時間:2023-09-15 16:32:57
    發布者:MaiMai
    瀏覽量:
    0

    上一章我們利用JSON.stringify()與JSON.parse()方法實現了深拷貝,但是這種方法存在很多弊端,如對象的屬性值是函數時,無法拷貝;不能解決循環引用的問題;無法拷貝特殊對象,比如:RegExp、BigInt、Date、Set、Map等。這一章我們來詳細介紹一下深拷貝與淺拷貝。

    首先要知道,js中數據類型分為基本數據類型 (Number, String, Boolean, Null, Undefined, Symbol)和對象數據類型 ( Object ),像 Array、Function、Date...等都屬于 Object,它們的值都是對象。

    引用數據型在被創建時,首先要在棧上給其引用分配一塊內存,而對象的具體信息都存儲在堆內存上,然后由棧上面的引用指向堆中對象的地址。當尋找引用值時,解釋器會先尋找棧中的地址。然后根據地址找到堆內存的實體。

    淺拷貝是會將對象的每個屬性進行依次復制,但是當對象的屬性值是引用類型時,實質復制的是其引用,當引用指向的值改變時也會跟著變化。而深拷貝則是層層拷貝,會另外創造一個一模一樣的對象,新對象跟原對象不共享內存。我們常用的拷貝數組的方法,如concat()、slice()、Array.from(),都是淺拷貝,除此之外,數組的其他方法如map()、filter()、reduce(),都是會造成淺拷貝的。

    要實現淺拷貝,可以利用Object.assign方法或for in方法。

    Object.assign方法

    for in方法

    而上一章提到的實現深拷貝的方法,除了利用JSON.stringify()與JSON.parse()方法外,最好的辦法是利用遞歸實現??梢越鉀QJSON方法所遺留的弊端。

    遞歸實現深拷貝

    關鍵詞:
    返回列表
    国产办公室秘书无码精品_AV无码天堂AV_A级毛片无码专区免费看
    <div id="q0ue2"></div>
  • <table id="q0ue2"></table>
  • <wbr id="q0ue2"></wbr>
    <div id="q0ue2"><acronym id="q0ue2"></acronym></div>