Object.assign()是淺拷貝。
合並對象
var o1 = { a: 1 };
var o2 = { b: 2 };
var o3 = { c: 3 };
var obj = Object.assign(o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 }
console.log(o1); // { a: 1, b: 2, c: 3 }, 注意目標對象自身也會改變。
注意,具有相同屬性的對象,同名屬性,后邊的會覆蓋前邊的。
Vue中的使用技巧
由於Object.assign()有上述特性,所以我們在Vue中可以這樣使用:
Vue組件可能會有這樣的需求:在某種情況下,需要重置Vue組件的data數據。此時,我們可以通過this.$data獲取當前狀態下的data,通過this.$options.data()獲取該組件初始狀態下的data。然后只要使用Object.assign(this.$data, this.$options.data())就可以將當前狀態的data重置為初始狀態,非常方便!