JS實現(xiàn)深拷貝的幾種簡單方法示例
一、使用 JSON 轉換
這是最簡單的方法。
JSON.parse(JSON.stringify(obj))
二、使用遞歸
通過遞歸的方式深度遍歷對象,將每個屬性的值進行復制。需要處理被復制對象為值類型的情況以及屬性值中包含對象的情況。需要注意的是,為了防止循環(huán)引用導致死循環(huán),需要記錄已經遍歷過的對象。
const deepClone = obj => { if (typeof obj !== 'object' || obj === null) { return obj; } let result = Array.isArray(obj) ? [] : {}; for (let key in obj) { if (obj.hasOwnProperty(key)) { result[key] = deepClone(obj[key]); } } return result; }
三、借助插件
Lodash
Lodash
是一個一致性、模塊化、高性能的 JavaScript
實用工具庫。
npm i --save lodash
import {cloneDeep} from 'lodash';
const obj1 = {a: {b: 2}}; const obj2 = cloneDeep(obj1);
總結
到此這篇關于JS實現(xiàn)深拷貝的幾種簡單方法的文章就介紹到這了,更多相關JS實現(xiàn)深拷貝內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
javascript removeChild 導致的內存泄漏
最近看到司徒正美的一篇文章《移除DOM節(jié)點》,文中說到在IE中移除容器類節(jié)點,會引起內存泄露。2010-08-08兼容ie和firefox的鼠標經過(onmouseover和onmouseout)實現(xiàn)--簡短版
兼容ie和firefox的鼠標經過(onmouseover和onmouseout)實現(xiàn)--簡短版...2007-11-11JavaScript實現(xiàn)相冊彈窗功能(zepto.js)
這篇文章主要介紹了JavaScript基于zepto.js實現(xiàn)相冊彈窗功能的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-06-06如何在JavaScript中等分數(shù)組的實現(xiàn)
這篇文章主要介紹了如何在JavaScript中等分數(shù)組的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12