オブジェクトの深さクローン
1183 ワード
こんなことがあったかどうか
let obj={name:'test',age:1}_obj.age=2 consolie.logs(obj.age)
深さクローン
let obj={name:'test',age:1}_obj.age=2 consolie.logs(obj.age)
// 2
consolie.logs(_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
退勤します.ここまで書きます.