日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

浅拷贝和深拷贝的应用

發布時間:2025/7/25 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅拷贝和深拷贝的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
說到這個其實要引申出一個知識點,那便是存儲類型,簡單來說分為值類型(又名 原始類型,六種 → string,number,null,undefined,boolean,symbol(不重復得值))和引用類型(又名 對象類型 例如 function,Array)其中常見值類型有String、Number、Boolean、引用類型有function、Array引用類型有this指針指向問題、所以本次說的淺深拷貝也是指引用類型具體可以在本博客 輸入關鍵詞 js變量按照存儲方式區分 搜索

淺拷貝 可以通過Object.assign來解決這個問題 或者 運用 展開運算符(...)來解決

let test = {name:'zachary'}let demo = testtest.name = 'changes'// 其實 demo 并沒有變值 但確實 被test再次賦值給帶跑偏了console.log(demo) // changesconsole.log(test) //changes let test = {name:'zachary'}//let demo = Object.assign({},test)let demo = {...test}test.name = 'changes'console.log(demo) // zacharyconsole.log(test) //changes

?如果是數組也可以這么用 只不過要把{} 改成[]

let test = [1,2,3]let demo = Object.assign([],test)
// let demo = [...test]test.push('changes')
console.log(demo) // [1, 2, 3]console.log(test) //[1, 2, 3, "changes"]

深拷貝通過將對象轉換成字符串,之后再將它反序列化成對象 用代碼表示就是 JSON.parse(JSON.stringify())

let map = {city:'重慶市',province:{jangxi:'江西省'} } // let cloneMap = {...map} 對于深拷貝無效 // let cloneMap = Object.assign({},map) 對于深拷貝無效
let cloneMap = JSON.parse(JSON.stringify(map)) cloneMap.province.jangxi='changes'
console.log(cloneMap) //jangxi:changes console.log(map)//jiangxi:'江西省'

此方法的深拷貝缺陷說明

會忽略 undefined 不能序列化函數 不能解決循環引用的對象但是在通常情況下,復雜數據都是可以序列化的,所以這個函數可以解決大部分問題,并且該函數是內置函數中處理深拷貝性能最快的

?

轉載于:https://www.cnblogs.com/Model-Zachary/p/10094402.html

總結

以上是生活随笔為你收集整理的浅拷贝和深拷贝的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。