var object1 = {
a: 1,
b: 3
};
Object.assing(object1, {b: 5});
这将使:
object1 = {
a: 1,
b: 5
}
问题是这可以通过传播运营商来实现... 它将返回新的Object而不是更新object1
var object2 = {...object1, b: 5}
与:
var object2 = Object.assign{{}, object1, {b: 5}}
这里
object2 = {
a: 1,
b: 5
}
但是
object1 {
a: 1,
b: 3
};
答案 0 :(得分:2)
将展开的右侧分配给object1
var object1 = {
a: 1,
b: 3
};
object1 = { ...object1,b: 5};
console.log(object1);
答案 1 :(得分:2)
执行{...object1, b: 5}
时,您正在使用对象文字符号创建一个新对象,该符号用于initialize内存中的新对象。
所以,当您这样做时:
var object2 = {...object1, b: 5}
与执行操作大致相同:
var object2 = {a: 1, b: 3, b: 5} // -> {a: 1, b: 5} -> creating a new object
因此,在此处创建新对象的不是扩展语法(...
),而是对象文字({}
)。
因此,除非您愿意将object1
重新分配给新对象引用,否则将无法仅使用传播语法就地修改object1
。
答案 2 :(得分:0)
使用传播运算符要求您创建一个新对象。但是PUT moive/_settings
{
"number_of_replicas": 2
}
将要编辑的对象作为第一个参数。它通常与空对象一起使用,但是您可以按以下方式使用它。
Object.assign