寫vue項目時的坑~Object.assign

引言

嗚嗚嗚坑死我了

Object.assign

在項目中,我compute引用$store裏面的數據,但是發現沒有辦法實時更新??,當時覺得就很奇怪,瘋狂谷歌也找不到答案,後來將Object.assign換成了“=”,發現可以了emmm
原因是這樣的

Object.assign reads the value of the property from the source object, it doesn’t copy getters/setters
來自stackOverflow

後來我自己又再 試了一下,發現真的是這樣,怎麼感覺和官方文檔有點差異,所以先記在這裏一下:

var a={
  sub:{}
};
var initSub={};
Object.defineProperty(a,'sub',{
  get(){
    console.log("觸發了getter");
    return initSub;
  },
  set(newValue){
    console.log('觸發了settter');
    initSub=newValue;
  }
})
console.log(a.sub);//觸發了getter   {}
Object.assign(a.sub,{1:2,2:3});//觸發了getter
console.log(a.sub);//觸發了getter   { '1': 2, '2': 3 }

希望大佬們幫我指正一下萬分感謝~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章