一、前言
之前写了一篇:浅析JavaScript解析赋值、浅拷贝和深拷贝的区别:https://www.mwcxs.top/page/592.html。里面介绍了解析赋值,浅拷贝,深拷贝的原理和实现。浅拷贝方法:Object.assign(),展开语法Spread,Array.prototype.alice(),array.prototype.concat()。深拷贝方法:JSON.parse(JSON.stringify(object)),对于undefined,symbol和函数的会直接忽略。
javascript之Object.assign实现浅拷贝的原理以及实现:https://www.mwcxs.top/page/595.html,浅拷贝Object.assign()原理实现。
二、数组浅拷贝
如果是数组,可以使用数组的一些方法实现:slice(),concat()返回一个新数组的特性实现拷贝。
举个例子:
用concat()实现
var arr = ['saucxs', 1, true, null, undefined];
var new_arr = arr.concat();
new_arr[0] = 'new';
console.log(arr) // ["saucxs", 1, true, null, undefined]
console.log(new_arr) // ["new", 1, true, null, undefined]
用slice实现