Javascript 使用扩展运算符更新对象值
我有一个函数,它向传入对象添加一个键,但我被告知要使用扩展运算符,我被告知可以使用扩展运算符创建具有相同属性的新对象,然后在其上设置isAvailableJavascript 使用扩展运算符更新对象值,javascript,spread-syntax,Javascript,Spread Syntax,我有一个函数,它向传入对象添加一个键,但我被告知要使用扩展运算符,我被告知可以使用扩展运算符创建具有相同属性的新对象,然后在其上设置isAvailable return new Partner(ServerConfig, capabilities, initialState) } class Partner { constructor (ServerConfig, capabilities, initialState) { initialState.isAvailable =
return new Partner(ServerConfig, capabilities, initialState)
}
class Partner {
constructor (ServerConfig, capabilities, initialState) {
initialState.isAvailable = true
所以我试过这样的方法,但是成功了,你能帮我吗?困惑的是,我应该这样使用扩展运算符,从函数返回吗
newObject = {}
// use this inside a function and get value from return
return {
value: {
...newObject,
...initialState
}
}
initialState.isAvailable = true
属性是按顺序添加的,因此如果要覆盖现有属性,则需要将它们放在末尾而不是开头:
return {
value: {
...initialState,
...newObject
}
}
您不需要newObject
(除非您已经有了它),但是:
例如:
const o1={a:“原始a”,b:“原始b”};
//不起作用:
常数o2={a:“更新的a”,…o1};
控制台日志(o2);
//作品:
常数o3={…o1,a:“更新的a”};
控制台日志(o3)
如果您知道属性的名称(a
,在下面的示例中),那么@crowder的答案是完美的:
const o3 = {...o1, a: "updated a"};
console.log(o3);
如果属性名称位于变量中,则需要使用语法:
…
不是操作员。它是语法、符号,但不是运算符(如for
语句中的()
)。理想情况下,给出一个可以执行的独立示例。
const o3 = {...o1, a: "updated a"};
console.log(o3);
let variable = 'foo'
const o4 = {...o1, [variable]: "updated foo"};
console.log(o4);