handleCancel (val) {
Object.assign(this.modalFormData, val) // this.modalFormData = val
}請(qǐng)問(wèn)下vue里面這兩種賦值有區(qū)別嗎?下面那么寫(xiě)就有問(wèn)題,也有可能是其他地方影響了,但是上面那樣寫(xiě)就對(duì)了,是為什么勒?
2 回答

翻過(guò)高山走不出你
TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
Object.assign的目的是將 val中的所有屬性復(fù)制給 this.modalFormData, 不等同于將val整個(gè)賦值給this.modalFormData。
舉例,請(qǐng)自行對(duì)比
var modalFormData = {x:1};var val = {y:2};var newModal = Object.assign(modalFormData, val);console.log(newModal); // {x:1, y:2}
var modalFormData = {x:1};var val = {y:2}; modalFormData = val;console.log(modalFormData); // {y:2}

一只斗牛犬
TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊
看 MDN
針對(duì)深拷貝,需要使用其他方法,因?yàn)?Object.assign()拷貝的是屬性值。假如源對(duì)象的屬性值是一個(gè)指向?qū)ο蟮囊?,它也只拷貝那個(gè)引用值。
如果目標(biāo)對(duì)象中的屬性具有相同的鍵,則屬性將被源中的屬性覆蓋。后來(lái)的源的屬性將類(lèi)似地覆蓋早先的屬性。
所以 它可以做三件事
淺一層的深拷貝
合并對(duì)象
合并具有相同屬性的值
添加回答
舉報(bào)
0/150
提交
取消