亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Object.assign

Object.assign

胡子哥哥 2018-08-18 16:23:04
handleCancel (val) {       Object.assign(this.modalFormData, val)      // this.modalFormData = val     }請問下vue里面這兩種賦值有區別嗎?下面那么寫就有問題,也有可能是其他地方影響了,但是上面那樣寫就對了,是為什么勒?
查看完整描述

2 回答

?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

Object.assign的目的是將 val中的所有屬性復制給 this.modalFormData, 不等同于將val整個賦值給this.modalFormData。
舉例,請自行對比

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}


查看完整回答
反對 回復 2018-08-19
?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

看 MDN

  1. 針對深拷貝,需要使用其他方法,因為 Object.assign()拷貝的是屬性值。假如源對象的屬性值是一個指向對象的引用,它也只拷貝那個引用值。

  2. 如果目標對象中的屬性具有相同的鍵,則屬性將被源中的屬性覆蓋。后來的源的屬性將類似地覆蓋早先的屬性。

所以 它可以做三件事

  1. 淺一層的深拷貝

  2. 合并對象

  3. 合并具有相同屬性的值


查看完整回答
反對 回復 2018-08-19
  • 2 回答
  • 0 關注
  • 910 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號