当前位置: 首页 > 知识库问答 >
问题:

关于对象上ES6 spread运算符的快速问题

程禄
2023-03-14

我有一个关于在对象上使用扩展运算符的简短问题,当我们试图返回一个字段已更改的对象副本时。我一直在学习与React和Redux有关的PluralSight教程,我遇到了spread操作符的这种用法:

let original = {name: 'Joel', favoriteFood: 'oranges', age: 26};
let happyBirthday = {...original, age: 27};

显然,这不是示例中的确切代码,但这是我有点困惑的用法。我最初的理解是,这将导致一个具有两个age键的对象,这显然不起作用。这是否通过覆盖重复的键的值来工作?我可以说:

let obj = {a: 2, a: 'no actually 3', a: 'nevermind...', a: 2};

然后有obo. a2?这是我正在寻找的一个非常小的澄清,但是当我看到这个时,出于某种原因,我被甩了出去!谢谢!

共有2个答案

周学义
2023-03-14
let original = {name: 'Joel', favoriteFood: 'oranges', age: 26};
let happyBirthday = {...original, age: 27};

Happy Birthday将是一个与原始相同但覆盖了age的对象。

这样就会产生这样一个物体:

{name: 'Joel', favoriteFood: 'oranges', age: 27} // Notice the age
司徒运锋
2023-03-14

对象不能有重复的键。如果在对象已具有所述密钥时为该对象指定密钥,或使用重复密钥编写对象初始值设定项,则该密钥处的先前值将被覆盖:

const obj = {
  foo: 'foo',
  bar: 'bar',
};

obj.foo = 'new';
console.log(obj);
 类似资料:
  • 问题内容: 我想为CGFloat覆盖’=’运算符,例如下面的try: 因此,我可以执行以下操作: 能做到吗?我得到错误 问题答案: 这是不可能的-如文档中所述: 无法重载默认赋值运算符(=)。仅复合赋值运算符可以重载。同样,三元条件运算符(a?b:c)不能重载。 如果那不能说服您,只需将运算符更改为: 并且您会注意到您将不再遇到编译错误。 产生误导性错误消息的原因可能是因为编译器将您试图重载的尝试

  • 问题内容: 我最近了解了python中的运算符重载,并且我想知道以下情况是否可能。 考虑以下假设/人为的类。 我知道上面写的方式,我可以做这样的事情 这些将按预期工作。我也知道目前的书写方式我无法做到这一点 有没有办法解决?我知道这个例子是人为设计的,但是我有一个应用程序,如果当我进行运算符重载时,为它定义运算符的类可以出现在运算符的右侧,它将非常有用。这可能在python中吗? 问题答案: 是。

  • 赋值运算符 变量赋值,初始化或改变一个变量的值。 = 等号=赋值运算符,既可用于算术赋值,也可用于字符串赋值。 var=27 category=minerals # "="左右不允许有空格 注意,不要混淆=赋值运算符与=测试操作符。 # = 作为测试操作符 if [ "$string1" = "$string2" ] then command fi # [ "X$string1"

  • 因为不直接修改 state 是 Redux 的核心理念之一, 所以你会发现自己总是在使用 Object.assign() 创建对象拷贝, 而拷贝中会包含新创建或更新过的属性值。在下面的 todoApp 示例中, Object.assign() 将会返回一个新的 state 对象, 而其中的 visibilityFilter 属性被更新了: function todoApp(state = init

  • 问题内容: 我要声明一个字段: 首先,问题的顺序吗?如果没有,是否存在标准的可接受序列或约定? 其次,我的应用程序中的是固定的。这是最好的方式来存储其价值吗? 问题答案: 我将Checkstyle与Eclipse结合使用,如果声明的顺序与您指定的顺序不同,则会导致警告,引用Java语言规范(JLS)。例如, 结果是 他们的页面列出了他们期望的顺序,尽管通过该页面上的链接到JLS,我看不到任何东西可

  • 据我所知,Java中的String concatenation""运算符是使用Stringbuilder实现的,例如: 内部编译为: 所以我尝试了这样的东西: 接下来,我使用==运算符相互测试了这些。结果主要是我所期望的:foo2和foo4没有为任何其他字符串返回“==”。 但是,fo3==fo1返回true。这是什么原因?StringBuilder类的toString方法内部调用“new Str