Javascript 如何在JS中分配真实对象(浅拷贝)

Javascript 如何在JS中分配真实对象(浅拷贝),javascript,Javascript,在JS中,我需要创建对象的浅拷贝。似乎Object.assign()是唯一的选项。这是真的,还是有其他方法?我更喜欢在赋值中使用语法方法(这将是一个表达式而不是一个语句)。要替换的内容(*1*): 始终存在可用于对象和其他对象的: b = {...b, ...c} (作为Object.assign()的替代方法)如果修改b,``[b]=[(*1*)]]它如何与(a==b)相同如果目的是保留a.x的值并保持相等,则不可能。由于a===b意味着a和b是同一个内存引用,更新b.x将改变a.x.xde

在JS中,我需要创建对象的浅拷贝。似乎Object.assign()是唯一的选项。这是真的,还是有其他方法?我更喜欢在赋值中使用语法方法(这将是一个表达式而不是一个语句)。要替换的内容
(*1*)

始终存在可用于对象和其他对象的:

b = {...b, ...c}

(作为Object.assign()的替代方法)

如果修改
b,``[b]=[(*1*)]]
它如何与
(a==b)
相同如果目的是保留
a.x
的值并保持相等,则不可能。由于
a===b
意味着
a
b
是同一个内存引用,更新
b.x
将改变
a.x
.xdeepakv,这就是我问题的重点:有没有办法做到这一点:在不修改引用的情况下修改b的内容(b引用的对象)。可以用Object.assign(b,c)完成,但我想知道是否有类似赋值的语法。marsheth,目的是保留a和b持有相同的内存引用,同时使引用的objectc与c相同。正如我所提到的,这可以通过Object.assign(b,c)替换[b]=[(*1*)])来实现,但如果有,我更愿意使用赋值语法。因为@xdeepakv询问a===b仍然是真的,我假设它仍然是真的,因为当b.x==c.x时,这意味着a也得到了具有相同值的a.x。扩展语法在对象构造函数{}中使用,该构造函数创建了一个新对象。所以在b={…b,…c}之后,b===a将不起作用。与Object.assign(b)不同,它将保留b==a。不过谢谢你的建议。说得好,@adimetrius!谢谢,干得好。我完全忽略了这个角度。很明显,我的建议并不完全符合OP(也就是说-你)提出的要求。
b = {...b, ...c}