原生的深拷貝~
分享一個 JavaScript 原生的深拷貝方法 structuredClone,其實這個方法出了很久了,但是存在感一直很低~MJW28資訊網——每日最新資訊28at.com
圖片MJW28資訊網——每日最新資訊28at.com
說這個方法前,我們先來討論一下,常見的深拷貝都有哪些方案呢?MJW28資訊網——每日最新資訊28at.com
JSON.parse & JSON.stringify()
很多人會用 JSON.parse(JSON.stringify(obj))來對對象進行深拷貝操作,但是這個方式缺點太多了MJW28資訊網——每日最新資訊28at.com
圖片MJW28資訊網——每日最新資訊28at.com
圖片MJW28資訊網——每日最新資訊28at.com
可以看到很多數據類型都沒有深拷貝成功MJW28資訊網——每日最新資訊28at.com
數據類型MJW28資訊網——每日最新資訊28at.com | 克隆結果MJW28資訊網——每日最新資訊28at.com |
numberMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
stringMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
undefinedMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
nullMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
booleanMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
objectMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
ArrayMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
FunctionMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
mapMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
SetMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
DateMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
ErrorMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
RegexMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
Dom節點MJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
并且在對象具有環引用的情況下,這種深拷貝方式會導致報錯MJW28資訊網——每日最新資訊28at.com
圖片MJW28資訊網——每日最新資訊28at.com
圖片MJW28資訊網——每日最新資訊28at.com
lodash.cloneDeep
lodash 的 cloneDeep也是深拷貝的手段之一,且非常完善,能成功拷貝各種數據類型MJW28資訊網——每日最新資訊28at.com
但是大家要注意使用 lodash 時要使用 lodash-es,這樣才能做到按需加載,減少不必要的代碼體積MJW28資訊網——每日最新資訊28at.com
圖片MJW28資訊網——每日最新資訊28at.com
圖片MJW28資訊網——每日最新資訊28at.com
數據類型MJW28資訊網——每日最新資訊28at.com | 克隆結果MJW28資訊網——每日最新資訊28at.com |
numberMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
stringMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
undefinedMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
nullMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
booleanMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
objectMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
ArrayMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
FunctionMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
mapMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
SetMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
DateMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
ErrorMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
RegexMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
Dom節點MJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
window.structuredClone
全局的 structuredClone() 方法使用結構化克隆算法將給定的值進行深拷貝MJW28資訊網——每日最新資訊28at.com
圖片MJW28資訊網——每日最新資訊28at.com
圖片MJW28資訊網——每日最新資訊28at.com
當克隆Function、Dom節點時,會報錯MJW28資訊網——每日最新資訊28at.com
圖片MJW28資訊網——每日最新資訊28at.com
圖片MJW28資訊網——每日最新資訊28at.com
其他數據類型可以成功拷貝~MJW28資訊網——每日最新資訊28at.com
圖片MJW28資訊網——每日最新資訊28at.com
數據類型MJW28資訊網——每日最新資訊28at.com | 克隆結果MJW28資訊網——每日最新資訊28at.com |
numberMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
stringMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
undefinedMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
nullMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
booleanMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
objectMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
ArrayMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
FunctionMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
mapMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
SetMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
DateMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
ErrorMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
RegexMJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
Dom節點MJW28資訊網——每日最新資訊28at.com | ?MJW28資訊網——每日最新資訊28at.com |
MJW28資訊網——每日最新資訊28at.com
本文鏈接:http://www.tebozhan.com/showinfo-26-87254-0.htmlJavaScript 原生深拷貝方法來啦!structuredClone 閃耀登場~
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 解密 Python 的變量和對象,它們之間有什么區別和聯系呢?
下一篇: 不知道這些不要說玩轉了Controller接口