深拷贝

185 阅读1分钟

如何区分深拷贝与浅拷贝,简单点来说,就是假设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()方法,将对象属性克隆到一个新对象。这属于浅拷贝。