浅拷贝直接赋值就可以,不多阐述
//举个栗子
//简单数据类型 直接 = 赋值
let a = '你好'
let b = a
//复杂数据类型
//Array
let arr = [1,2,3]
let arr1 = arr.concat()
......
深拷贝引用数据类型函数
function deepClone(obj) {
// typeof判断 是否为引用数据类型
if (typeof obj !== 'object') {
return
}
// 判断是数组还是对象
let newObj = obj instanceof Array ? [] : {}
// 遍历 每一项中的key是否存在当前对象中 (判断对象本身是否存在该属性)
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
// 如果对象中属性为复杂数据类型, 进行递归
// 否则就把当前属性赋值给新对象或数组
newObj[key] = typeof obj[key] == 'object' ? deepClone(obj[key]) : obj[key]
}
}
return newObj
}
let obj = {
name: 'zhangsan',
age: 12,
message: {
sex: '女',
sayHi: function () {
console.log('你好');
}
}
}
let obj1 = deepClone(obj)
console.log(obj)
console.log(obj1)