如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,A变B也跟着变了,说明这是浅拷贝;如果A变B没变,那就是深拷贝,自食其力。
(1)深拷贝的实现
//增加职位
addWork(){
if(this.PartnerList.length>3){
wx.showToast({
title:"最多添加3个!",
icon:"none",
duration:1500
})
}else{
let keys=this.PartnerList[0] //模板对象
let info={}
// console.log(Object.keys(keys)) //由属性名组成的数组
Object.keys(keys).map(item=>{
this.$set(info,item,"")
})
// console.log(info)
const _keys=JSON.stringify(info)
this.PartnerList.unshift(JSON.parse( _keys))
}
},
(2)浅拷贝
Object.assign方法总是拷贝一个属性的值,而不会拷贝它背后的赋值方法或取值方法。
Object.getOwnPropertyDescriptors()方法的另一个用处,是配合Object.create()方法,将对象属性克隆到一个新对象。这属于浅拷贝。