我有一个函数,可以给传入的对象添加一个键,但是我被告知要使用spread操作符,我被告知我可以使用spread操作符,创建一个新的,具有相同属性的对象,然后在上面设置isAvailable。
return new Partner(ServerConfig, capabilities, initialState)
}
class Partner {
constructor (ServerConfig, capabilities, initialState) {
initialState.isAvailable = true
所以我尝试了类似的方法,但是没有成功,你能帮帮我吗?,我很困惑,我应该这样使用spread操作符吗,从一个函数返回?
newObject = {}
// use this inside a function and get value from return
return {
value: {
...newObject,
...initialState
}
}
initialState.isAvailable = true
3条答案
按热度按时间wlzqhblo1#
属性是按 * 顺序 * 添加的,因此如果要覆盖现有属性,需要将它们放在末尾而不是开头:
但是,您不需要
newObject
(除非您已经有了它):示例:
yruzcnhs2#
如果你知道属性的名称(下面例子中的
a
),那么@crowder的答案是完美的:如果属性名称在变量中,则需要使用Computed Property names语法:
w7t8yxp53#
使用int
...
扩展对象将保持状态的完整性。假设您要添加另一个属性,但要保留其他属性:
这将导致
我们刚刚添加了一个新属性而没有丢弃其他属性.也许你的应用程序的另一部分正在使用其他属性,所以我们仍然保留它们.假设你想要更新
isOpen
状态.你首先扩展初始状态,然后添加最后一段逻辑这会导致
现在,在当前页面上,由于
isOpen:true
,您可能会向用户显示一个不同的UI,假设这次您要更新count
,您也可以编写以下代码现在你的当前状态只有
count:5
,因此你的状态中的其他属性已丢失。现在没有isOpen
属性。如果你在显示其他UI时未成功处理isOpen
逻辑,则你的应用将崩溃。但如果处理正确,isOpen
将导致falsy
,因此你的页面将不会向用户显示该UI。