JS 數(shù)組和對象的深拷貝操作示例
本文實例講述了JS 數(shù)組和對象的深拷貝操作。分享給大家供大家參考,具體如下:
一.數(shù)組的深拷貝let arr = [ undefined, function(){ console.log(123); }, true, null, { name:'123', age:23 }];// arr作為拷貝對象1. Array.from()
Array.from()能將一個類數(shù)組轉(zhuǎn)化成一個真正的數(shù)組,因此它返回的是一個新數(shù)組。
let arr1 = Array.from(arr);arr[0] = 2;console.log(arr1);// [ undefined, [Function], true, null, { name: ’123’, age: 23 } ]2. Object.assign()
let arr1 = Object.assign([], arr)arr[0] = 2;console.log(arr1);// [ undefined, [Function], true, null, { name: ’123’, age: 23 } ]
此方法也可用作對象的深拷貝
3. Slice()let arr1 = arr.slice(0);arr[0] = 2;console.log(arr1);// [ undefined, [Function], true, null, { name: ’123’, age: 23 } ]4. Concat()
let arr1 = arr.concat();arr[0] = 2;console.log(arr1);// [ undefined, [Function], true, null, { name: ’123’, age: 23 } ]5. 擴展運算符深拷貝
// let [...arr1] = arr; // 這兩種都可以let arr1 = [...arr];arr[0] = 2;console.log(arr1);// [ undefined, [Function], true, null, { name: ’123’, age: 23 } ]
此方法也可用作對象的深拷貝
二.對象的深拷貝let obj = { name: 'a', age: 20, sex: false, user: { a: 20, n: 'b' }, f: function(){ return 1; }, u: undefined, n: null}
用擴展運算符和Object.assign()方法可以深拷貝對象
let obj1 = Object.assign({}, obj)obj[age] = 2;console.log(obj1);// let obj = { name: 'a', age: 20, sex: false,user: {a: 20,n: 'b},f: function(){return 1;},u: undefined,n: null}
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。
更多關于JavaScript相關內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結》、《JavaScript數(shù)據(jù)結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數(shù)學運算用法總結》
希望本文所述對大家JavaScript程序設計有所幫助。
相關文章:
1. IntelliJ IDEA設置背景圖片的方法步驟2. Python OpenCV去除字母后面的雜線操作3. JAMon(Java Application Monitor)備忘記4. Java類加載機制實現(xiàn)步驟解析5. docker /var/lib/docker/aufs/mnt 目錄清理方法6. Spring security 自定義過濾器實現(xiàn)Json參數(shù)傳遞并兼容表單參數(shù)(實例代碼)7. 增大python字體的方法步驟8. Python TestSuite生成測試報告過程解析9. IntelliJ IDEA設置默認瀏覽器的方法10. 教你用Java Swing做一個定時提醒工具
