写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 }

希望大佬们帮我指正一下万分感谢~~

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