重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本文实例讲述了JS 数组和对象的深拷贝操作。分享给大家供大家参考,具体如下:
创新互联公司专业为企业提供永修网站建设、永修做网站、永修网站设计、永修网站制作等企业网站建设、网页设计与制作、永修企业网站模板建站服务,10年永修做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。一.数组的深拷贝let arr = [ undefined, function(){ console.log(123); }, true, null, { name:"123", age:23 } ]; // arr作为拷贝对象1. Array.from()
Array.from()能将一个类数组转化成一个真正的数组,因此它返回的是一个新数组。
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}
相关学习推荐:javascript视频教程