Object.assign方法
// const target={
// a:123,
// b:456
// }
// const tem={
// a:321,
// c:789
// }
// const result=Object.assign(target,tem)//assign方法,用后面对象的属性覆盖第一个对象的属性,可以传入多个对象
// console.log(result);
// const obj={name:'xm'}
// function fnc(obj){
// obj.name='111'
// console.log(obj);
// const fncObj=Object.assign({},obj)//通过assign方法复制一个新对象
// fncObj.name='222'
// console.log(fncObj);
// }
// fnc(obj)
//但是对于Object.assign()而言,如果对象的属性值为简单类型(string,number),通过Object.assign({},srcobj);得到的新对象为深拷贝。
//如果属性值为对象或其他引用类型,那对于这个对象而言其实是浅拷贝的,这是Object.assign()特别需要注意的地方。
const obj = { name: 'xm', hobby: { eat: '1',drink:'2' } }
function fnc(obj){
obj.name='111'
const fncObj=Object.assign({},obj)//通过assign方法复制一个新对象
fncObj.name='222'
fncObj.hobby.eat='3'
console.log(obj);
console.log(fncObj);//会发现输出的eat值都是3,name值没有影响
}
fnc(obj)