引用类型复制之后,修改复制的变量不影响原始变量的三种方法
- JSON.parse(JSON.stringify(…))
function copy(src){
let dest;
dest = JSON.parse(JSON.stringify(src));
return dest;
}
缺点:无法拷贝函数
- Object.assign({}, source)
function copy(src){
let dest;
dest = Object.assign({}, src);
return dest;
}
缺点:只能拷贝一层
- 遍历深拷贝–所有情况适用
function copy(src) {
let dest;
if (typeof src !== 'object') return ;
dest = src instanceof Array ? [] : {};
for (let key of Object.keys(src)) {
dest[key] = typeof src[key] === 'object' ? copy (src[key]) : src[key];
}
return dest;
}