Ras*_*vcı 17 javascript spread-syntax
我有一个函数,它为传入的对象添加一个键,但我被告知使用传播运算符,我被告知我可以使用spread运算符创建一个具有相同属性的新对象,然后在其上设置isAvailable .
return new Partner(ServerConfig, capabilities, initialState)
}
class Partner {
constructor (ServerConfig, capabilities, initialState) {
initialState.isAvailable = true
Run Code Online (Sandbox Code Playgroud)
所以我尝试了类似的东西但是成功了,你能帮助我吗?并且困惑,我应该以这种方式使用spread运算符,从函数返回?
newObject = {}
//在函数中使用它并从return中获取值
return {
value: {
...newObject,
...initialState
}
}
Run Code Online (Sandbox Code Playgroud)
initialState.isAvailable = true
T.J*_*der 27
属性按顺序添加,因此如果要覆盖现有属性,则需要将它们放在末尾而不是开头:
return {
value: {
...initialState,
...newObject
}
}
Run Code Online (Sandbox Code Playgroud)
你不需要newObject(除非你已经躺在那里),但是:
return {
value: {
...initialState,
isAvailable: newValue
}
}
Run Code Online (Sandbox Code Playgroud)
例:
const o1 = {a: "original a", b: "original b"};
// Doesn't work:
const o2 = {a: "updated a", ...o1};
console.log(o2);
// Works:
const o3 = {...o1, a: "updated a"};
console.log(o3);Run Code Online (Sandbox Code Playgroud)
Bre*_*rne 17
如果您知道属性的名称(a在下面的示例中),那么@crowder 的答案是完美的:
const o3 = {...o1, a: "updated a"};
console.log(o3);
Run Code Online (Sandbox Code Playgroud)
如果属性名称在变量中,则需要使用计算属性名称语法:
let variable = 'foo'
const o4 = {...o1, [variable]: "updated foo"};
console.log(o4);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15201 次 |
| 最近记录: |