Javascript 更改一个或多个项目时复制到新对象的方法
我有一个目标:Javascript 更改一个或多个项目时复制到新对象的方法,javascript,Javascript,我有一个目标: const obj = { name: "foo", other: "something" } 基于我的对象创建一个新对象(浅层副本),我将使用,然后在我的新对象上更改名称: const newObj = {...obj} newObj.name = "bar"; 但最近我遇到了同样起作用的语法: const newObj = { ...obj, name: "bar" } 这是如何工作的,它叫什么 您指定的两种方法是等效的。在第二种方法中 cons
const obj = {
name: "foo",
other: "something"
}
基于我的对象创建一个新对象(浅层副本),我将使用,然后在我的新对象上更改名称
:
const newObj = {...obj}
newObj.name = "bar";
但最近我遇到了同样起作用的语法:
const newObj = {
...obj, name: "bar"
}
这是如何工作的,它叫什么 您指定的两种方法是等效的。在第二种方法中
const newObj = {
...obj, name: "bar"
}
它使用key=name
和value=“bar”
创建一个键-值对,因为一个键不能有多个值(如果不是数组)。它超过了先前的值。第二种方法中的代码相当于
const newobj = {
name: "foo",
other: "something",
name: "bar"
}
这就是工作原理,它允许在需要零个或多个参数(用于函数调用)或元素(用于数组文本)的地方展开iterable。这解释了它的作用。我希望有帮助。
除了创建浅拷贝,spread还允许合并对象。后者将取代前者。例如:
const obj = { name: 'jane', age: 22 }
const merged = { ...obj, age: 21 } // { name: 'jane', age: 21 }
const obj = { name: 'jane', age: 22 }
const merged = { ...obj, hasDog: true } // { name: 'jane', age: 22, hasDog: true }
const obj = { name: 'jane', age: 22 }
const obj2 = { age: 19, hasDog: true }
const merged = { ...obj, ...obj2 } // { name: 'jane', age: 19, hasDog: true }
a property…?它首先复制obj的所有属性,然后覆盖名称property是否有文本而不是图像?很难找到。而且不可复制。这是链接