您好,登錄后才能下訂單哦!
這篇文章主要介紹js中深拷貝和淺拷貝的區別有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
javascript是一種動態類型、弱類型的語言,基于對象和事件驅動并具有相對安全性并廣泛用于客戶端網頁開發的腳本語言,同時也是一種廣泛用于客戶端Web開發的腳本語言。它主要用來給HTML網頁添加動態功能,現在JavaScript也可被用于網絡服務器,如Node.js。
在JavaScript中,變量的類型有基本類型和引用類型兩種類型。我們對基本類型的復制操作是對值進行拷貝,對引用類型的復制則是拷貝地址。這中間都是通過深拷貝與淺拷貝實現的。
深拷貝:
1、將數據中所有的數據賦值過去,無限層級拷貝,,每一級別的數據都會拷貝出來;
2、所有元素或屬性均完全復制,與原對象完全脫離;
3、在堆中重新分配內存, 將源對象的各個屬性復制進去.;
4、拷貝后,修改拷貝后的對象,不影響之前的對象。
function test(obj){ let _obj = JSON.stringify(obj), objClone = JSON.parse(_obj); return objClone } var tal = {name:'lili'}; Cal=test(tal); Cal.name = 'kiki'; console.log(tal,Cal); //{name: "lili"} {name: "kiki"}
淺拷貝:
1、將原有的數據賦值過去,只進行一層拷貝,深層次的對象級別的就拷貝引用;
2、原始類型為值傳遞,對象類型仍為引用傳遞。;
3、是拷貝引用, 拷貝后的引用都是指向同一個存放數據位置的指針,;
4、拷貝后,修改拷貝后的對象,會影響拷貝前的對象。
var a = [1,2,3,4,5]; var b = a; a[0] = 6; console.log(a,b); //代碼運行結果:a:[6,2,3,4,5] b:[6,2,3,4,5]
以上是“js中深拷貝和淺拷貝的區別有哪些”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。