(function(){
let item = {
a:1,
b:{
t:'sdf',
d:[2,3,4],
t:{
c:'cccc'
}
}
};
let base = 'dfsf';
let my = {...item};
console.log('before---',my)
item.a = 4444;
console.log('end---',my)
})()
//浅拷贝分基本数据类型--实例拷贝 应用数据类型---地址拷贝
//浅拷贝 1,单层map适用 2,单层map中基本数据类型完成拷贝,应用数据类型会受影响
function base_(){
let base ='first';
let base1 = base;
let base2 = {
a:1,
b:{
t:'sdf',
d:[2,3,4],
t:{
c:'cccc'
}
}
};
base3 = {...base2}; //扩展运算符
base4 = Object.assign({},base2);//方式二
}
//深拷贝是实例拷贝 常用方式
function instance_(object){
return JSON.parse(JSON.stringify(object))
}
//JSON 方式缺点
//如果源对象中有时间对象,反序列化后得到的是个字符串而非时间对象
//如果源对象中有RegExp、Error对象,则序列化的结果是空对象
//如果源对象中有函数、undefined,序列化时候会丢掉它们
//如果源对象里有NaN、Infinity和-Infinity,则序列化的结果会变成null
///JSON.stringify()只能序列化对象的可枚举的自有属性
//对象中存在循环引用的情况也无法正确实现深拷贝
//会忽略symbol
console