深浅拷贝
let a = 1 let b = a b = 3 console.log(b) // 3
这是赋值(非要说就是深拷贝)
let arr = [1, 2, 3] let newArr = arr newArr.push(4) console.log(newArr) // 1,2,3,4 console.log(arr); // 1,2,3,4
push 会影响原数组(数组和对象的赋值都叫做浅拷贝)
let arr = [1, 2, 3] let newArr = [...arr] newArr.push(4) console.log(newArr) // 1,2,3,4 console.log(arr); // 1,2,3
let arr2 = [1,[2,3],[4,5]] let newArr2 = [...arr2] newArr2[1].push(666) console.log(newArr2) // [1,[1,2,666],[4,5]] consloe.log(arr2) // [1,[1,2,666],[4,5]]
解构赋值,针对一位数组和对象,可以看做是深拷贝
多维数组就是浅拷贝
// 深拷贝用法(1) let list = [ {id:1,name:'TM',age:18}, {id:2,name:'小花',age:19}, {id:3,name:'小米',age:20}, ] let mewList = JSON.parse(JSON.stringify(list)); newList.push({id:4,name:'小亮',age:21}) console.log(newList)
JSON转换:
1.方法函数不能进行转换
// 深拷贝--->专门针对引用数据类型 function deepClone(source) { const targetObj = source.constructor === Array ? [] : {} for (let key in source) { if (source.hasOwnProperty(keys)) { if (source[key] && typeof source[key] === 'object') { targetObj = source.constructor === Array ? [] : {} targetObj = deepClone(source[key]) } else { targetObj[key] = source[key] } } } return targetObj }

浙公网安备 33010602011771号