深拷贝和浅拷贝

‌浅拷贝是一种仅复制对象最外层属性的拷贝方式,对于基本类型直接复制值,对于引用类型则复制内存地址,导致新旧对象共享同一引用数据。

实例:

实现方法: 使用赋值运算符(=)或者Object.assign()函数进行拷贝

// 浅拷贝
const a = [1, 2, 3, 4]
const b = a
b[0] = 5
console.log(a) //[5,2,3,4]
console.log(b)//[5,2,3,4]

深拷贝递归复制所有嵌套层级的引用类型数据,生成完全独立的对象树

实例:

实现方法: 递归拷贝 JSON.parse(JSON.stringify(obj)) …扩展运算符

// 深拷贝
const c: any = [1, 2, 3, 4]
const d: any = [...c] //这只适用于一层深拷贝
d[0] = 6
console.log(c) //[1,2,3,4]
console.log(d) //[6,2,3,4]

如果拷贝的有对象用...扩展符就会失效

// 深拷贝
const c: any = [1, 2, 3, 4, { a: 1 }]
const d: any = [...c] //这只适用于一层深拷贝
d[4].a = 6
console.log(c) //[1,2,3,4,{a:6}]
console.log(d) //[1,2,3,4,{a:6}]

const f: any = JSON.parse(JSON.stringify(c));
f[4].a = 7;
console.log(c) //[1,2,3,4,{a:6}]
console.log(f); //[1,2,3,4,{a:7}]

你可能感兴趣的:(前端面试题,javascript,前端,vue.js)