FormData

1
2
3
4
5
let objNew = {}
for (let i of formData.entries()) {
objNew[i[0]] = i[1]
}
console.log(objNew)

拷贝问题

注意 JavaScript 中对象和数组的引用特性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
const A = {
B: [],
C: 99
};

// 引用赋值:赋值的地址,数据未独立
let obj = A;

// 解构赋值(浅拷贝):当前浅拷贝只复制对象的第一层属性,且数组或对象只是引用地址被复制(该类数据依旧未独立)
let obj = { ...A };

// 利用Json格式化完成深拷贝,不能处理函数、undefined、Symbol 等特殊类型
let obj = JSON.parse(JSON.stringify(A));

// 自定义深拷贝 - 拷贝一份完全独立的数据
export const deepClone = (obj) => {
if (obj === null || typeof obj !== 'object') return obj

if (Array.isArray(obj)) {
return obj.map((item) => deepClone(item))
}

const clone = {}
for (const key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
clone[key] = deepClone(obj[key])
}
}
return clone
}