您当前的位置: 首页 > 学无止境 > JS经典实例 网站首页JS经典实例
ES6_深度克隆_01
发布时间:2019-11-27 12:49:56编辑:雪饮阅读()
Object.assign
浅克隆
let obj1={username:'dmj',age:24};
let obj2=Object.assign(obj1);
console.log(obj2);
obj2.username='xy';
console.log(obj1);
新对象的属性修改影响到了原对象的属性
arr.concat
数组合并
let arr=[1,3,{username:"dmj"}];
let arr2=arr.concat([2,4]);
console.log(arr2);
数组拷贝
let arr=[1,3,{username:"dmj"}];
let arr2=arr.concat();
console.log(arr2);
arr2[0]=4;
arr2[2].username='xy';
console.log(arr);
对于数组中的基本数据类型的确可以在新数组中修改并不影响原数组,但对象则仍旧影响原数组
arr.slice
数组截取
let arr=[1,3,1,4,5,2,1,'dmj'];
let arr2=arr.slice(0,3);
console.log(arr2);
数据拷贝
let arr=[1,3,{username:"dmj"}];
let arr2=arr.slice();
console.log(arr2);
arr2[0]=4;
arr2[2].username='xy';
console.log(arr);
和上面concat一样,只对基本数据类型有效,对对象无效
JSON.parse与JSON.stringify
深拷贝
let arr=[1,3,{username:"dmj"}];
let arr2=JSON.parse(JSON.stringify(arr));
console.log(arr2);
arr2[0]=4;
arr2[2].username='xy';
console.log(arr);
注意:若原数据中包含function则深拷贝后function会丢失
let arr=[1,3,{username:"dmj"},function ff(){}];
let arr2=JSON.parse(JSON.stringify(arr));
console.log(arr2);
arr2[0]=4;
arr2[2].username='xy';
console.log(arr);
关键字词:es6,深拷贝,深克隆
上一篇:ES6_对象方法的扩展
下一篇:ES6_深度克隆_02