首先我们要了解深浅拷贝,那么我们必须先了解一下赋值的概念
那么什么叫赋值呢,他和深浅拷贝有什么区别
赋值:
let person = {
name: '候老师',
hobby: ['学习', ['看电影', '打游戏']]
}
let person1 = person
person1.name = '道长'
person1.hobby[0] = '打游戏'
console.log(person);
console.log(person1);
浅拷贝:
function copy(obj) {
var target = {}
for (const item in obj) {
if (obj.hasOwnProperty(item)) {
target[item] = obj[item]
console.log(item);
console.log(obj[item]);
}
}
return target
}
let person1 = copy(person)
person1.name = '道长'
person1.hobby[0] = '打游戏'
console.log(person);
console.log(person1);
深拷贝
function deepClone(obj) {
let targets = {}
for(let i in obj){
if(obj === null) return obj
if(obj instanceof Date) return new Date(obj)
if(obj instanceof RegExp) return new RegExp(obj)
if(typeof obj !== 'object') return obj
if(obj.hasOwnProperty(i)){
targets[i] = deepClone(obj[i])
}
}
return targets
}
let person1 = deepClone(person)
person1.name = '道长'
person1.hobby[0] = '打游戏'
console.log(person);
console.log(person1);