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測試上述代碼運行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
Bootstrap DateTime Picker日歷控件簡單應(yīng)用
這篇文章主要介紹了Bootstrap DateTime Picker日歷控件的簡單應(yīng)用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03Bootstrap整體框架之JavaScript插件架構(gòu)
這篇文章主要介紹了Bootstrap整體框架之JavaScript插件架構(gòu)的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12js,jquery滾動/跳轉(zhuǎn)頁面到指定位置的實現(xiàn)思路
這篇文章主要介紹了如何通過js或jquery滾動/跳轉(zhuǎn)頁面到指定位置,需要的朋友可以參考下2014-06-06javascript dom操作之cloneNode文本節(jié)點克隆使用技巧
文本克隆函數(shù)cloneNode他有兩個參數(shù)——true or false2009-12-12javascript校驗價格合法性實例(必須輸入2位小數(shù))
這篇文章主要介紹了javascript校驗價格合法性實例,其中價格必須是數(shù)字且必須輸入2位小數(shù),需要的朋友可以參考下2014-05-05js 開發(fā)之a(chǎn)utocomplete="off"在chrom中失效的解決辦法
這篇文章主要介紹了js 開發(fā)之a(chǎn)utocomplete="off"在chrom中失效的解決辦法的相關(guān)資料,希望通過本文能幫助到大家,解決遇到這樣的問題,需要的朋友可以參考下2017-09-09