是否遇到过这样的事情
let obj = {
name: 'test',
age: 1
}
_obj.age = 2
console.log(obj.age)// 2
console.log(_obj.age)// 2
因为javascript的内存机制导致我们在克隆对象的是浅克隆,相当于我们只是复制了指针。其实他们指向的原地址是一样的。
深度克隆
let obj = {
name: 'test',
age: 1
}
function cloneObj(obj) {
let newObj = obj.constructor === Array ? [] : {}
if (typeof obj !== 'object') {
return
} else {
let str = JSON.stringify(obj)
newObj = JSON.parse(str)
}
return newObj
}
const _obj = this.clone(obj)
_obj.age = 2
console.log(obj.age) // 1
console.log(_obj.age) // 2
function clone(obj) {
let newObj = obj.constructor === Array ? [] : {}
for (let key in obj) {
newObj[key] = obj[key]
}
return newObj
}
let a = {
name: 'a',
age: 11
}
let b = Object.assign({}, a)
b.name = 'b'
console.log(a.name) // a
console.log(b.name) // b
要下班了,写到这里了!