在 JavaScript 中使用 ... 修改对象

Posted

技术标签:

【中文标题】在 JavaScript 中使用 ... 修改对象【英文标题】:modifying an object using ... in JavaScript 【发布时间】:2019-09-04 22:19:30 【问题描述】:

我有一个名为 added 的对象,如下所示:


  title: "test1",
  startDate: "Mon Apr 15 2019 10:30:00 GMT-0500 (Central Daylight Time)",
  endDate: "Mon Apr 15 2019 11:00:00 GMT-0500 (Central Daylight Time)",
  allDay: false

我正在尝试编辑此对象的 startDateendDate 字段:

added = 
  ...added,
  added.startDate: "111", added.endDate: "222"       

但这给了我一个错误,上面写着

意外的令牌,预期的,

这样做的正确方法是什么?

【问题讨论】:

Using spread operator to update an object value的可能重复 【参考方案1】:

当将added 重新分配为新的对象字面量时,s 中的所有内容都需要是键值对,它需要传播(使用...)一个对象键值对到新对象中。您不能将 普通对象 放入对象字面量中(除非您传播它),因为对象是一个值,而不是键值对。

改为:

added = 
  ...added,
  startDate: "111",
  endDate: "222"

你也可以

added = 
  ...added,
  ...
    startDate: "111",
    endDate: "222"
  

这将是有效的语法(但这样做很愚蠢 - 更容易在外部对象文字中列出新属性)。

【讨论】:

以上是关于在 JavaScript 中使用 ... 修改对象的主要内容,如果未能解决你的问题,请参考以下文章

javascript 修改嵌套在对象中的对象

修改 Javascript 对象副本会使原始对象在 Angular 5 Reactive Forms 中发生变化

javascript 修改存储在对象中的数组

JavaScript学习笔记——this原型javascript面向对象

初识JavaScript

javascript 使用闭包保护对象内的属性不被外部修改