Javascript 赋值小记

在 JavaScript 中,当你将一个对象直接赋值给另一个对象时,比如 obj1 = obj2,这会在内存中创建 obj2 的引用并让 obj1 指向这个新的引用。这意味着 obj1 将不再指向原来的对象,而是开始指向 obj2 所指向的对象,其原有的属性(在这个例子中的 c 属性)将会丢失。

但是,如果你想要合并 obj2obj1,即保留 obj1 的所有属性,并且只覆盖 obj1obj2 共有的属性(如 ab),你可以使用类似 Object.assign() 或者扩展运算符(spread operator)。这样,obj1.c 将会保持原样,不会被 obj2 影响。

如果直接执行 obj1 = obj2,那么赋值后 obj1 将完全指向 obj2,因此 obj1 不再有 c 属性。在这种情况下,访问 obj1.c 将返回 undefined

如果目的是合并两个对象而不想丢失 obj1c 字段,可以这样做:

Object.assign(obj1, obj2);
// 或者
obj1 = {...obj1, ...obj2};

这两种方式都会确保 obj1.c 仍然存在并等于 3,因为它们只是覆盖了 obj1 中与 obj2 相同的键(即 ab),而不会影响 obj1 中已有的其他键(即 c)。

所以,根据你的描述,如果你想在赋值之后 obj1 仍然保有 c 字段,则需要采用上述合并的方式之一,此时 obj1.c 应该仍然是 3。如果不是这种方式,而是简单的直接赋值 obj1 = obj2,则 obj1.c 会是 undefined

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值