1.浅拷贝
let obj = {
a: 1,
b: {
c: 1
},
}
let copyObj = obj
copyObj.a = 2
console.log(obj, copyObj)
2.JSON.parse(JSON.stringify(obj))
let copyObj = JSON.parse(JSON.stringify(obj))
copyObj.a = 2
console.log(obj, copyObj)
**需要注意的问题:这种方法不能解决属性为函数,undefined,循环引用的的情况
下面看效果:
let obj = {
a: undefined,
b: {
c: function () {
console.log(1)
},
d: null,
e: new Date(),
f: new RegExp('\\w+'),
g: NaN
},
}
let copyObj = JSON.parse(JSON.stringify(obj))
console.log(obj, copyObj)
- 原对象中的a、c不见了,undefined、function类型的key会丢失
- 时间对象,会变成字符串形式
- RegExp定义的属性会变成 {}
- NaN 类型会变成 null
- 不能循环引用,会报错