<template>
<div>
<div v-for="item in list2">{{item.name}}{{item.title}}</div>
<button @click="change">按鈕</button>
</div></template><script type="text/ecmascript-6">export default {
data() { return { list1: { name: "John", id: 1 }, list2: [],
};
},
created() { this.obj = this.list1 //Object.assign(this.obj,{title:'123'}) //←直接綁定到obj上不會給title綁定get和set所以點擊按鈕也不會更新視圖
//↓創(chuàng)建一個新的對象title就能成功綁定get和set~這是什么原理,求解惑
this.obj = Object.assign({},this.obj,{title:'123'})
console.log(this.obj); this.list2.push(this.obj) console.log(this.list2);
}, methods: {
change(){ this.list2[0].title='harry'
}
}
};</script>我的理解是vue會直接給新聲明對象的所有屬性自動綁定set和get~Object.assign把對象合并到新對象上,相當(dāng)于把合并對象的所有屬性重新聲明到新對象上所以自動綁了get和set,不知道有沒有理解錯~
object.assign問題(vue相關(guān))
寶慕林4294392
2019-03-20 19:18:09