首页 > 解决方案 > 对象传播的顺序和其他属性起什么作用?

问题描述

考虑一个对象data

data = {
  draggingTaskId: '',
  entities: {},
  selectedTaskIds: [],
}

我以两种不同的顺序使用解构赋值,但两次的行为都不同。对象解构分配中的顺序是否重要?

console.log('----------------------------------');

console.log({
  ...data,
  draggingTaskId: "task-0",
});

console.log({
  draggingTaskId: "task-0",
  ...data,
});

console.log('----------------------------------');

输出:

--------------------------------

draggingTaskId: "task-0"
entities: {}
selectedTaskIds: []

draggingTaskId: ""
entities: {}
selectedTaskIds: []

-----------------------------------

在第二种情况下, thedraggingTaskId以空字符串的形式出现。

标签: javascriptspread-syntax

解决方案


顺序确实是相关的 - 如果它们具有相同的键,则稍后出现的项目会覆盖更早出现的项目。

console.log({
  ...data,
  draggingTaskId: 'task-0', // this overrides the value of data.draggingTaskId = '', resulting in 'task-0'
})
console.log({
  draggingTaskId: 'task-0', // In this case this key is overridden by the value of data.draggingTaskId = '', resulting in ''
  ...data,
})

您可能会发现这很有帮助 - https://dmitripavlutin.com/object-rest-spread-properties-javascript/#21-object-spread-rule-latter-property-wins


推荐阅读