form 和 {...form}区别主要体现在对象的引用和解构

form{...form} 在 JS 中是有区别的,主要体现在对象的引用和解构。

  1. form:直接引用 form 对象。如果你更改 form,那么所有引用 form 的地方都会得到更新。这是因为在 JavaScript 中,对象是通过引用来传递的,所以修改对象的属性,会影响到所有引用这个对象的地方。

  2. {...form}:这是使用了 ES6 的新特性,叫做对象的解构赋值,或者叫作对象的扩展运算符。它创建了 form 的一个浅拷贝,也就是新生成了一个新的对象,对象的属性和 form 一样。但是新对象和 form 的内存地址是不一样的,也就是说新对象和 form 是完全独立的。所以,当你更改这个新对象的时候,原来的 form 不会受到影响。

举个例子:

let form = { a: 1, b: 2 };
let form_copy = { ...form };
form_copy.a = 3;
console.log(form);     // 输出 { a: 1, b: 2 }
console.log(form_copy); // 输出 { a: 3, b: 2 }

如上所示,在修改 form_copy 对象后,form 对象的内容并未改变。

需要注意的是 {...form} 是一种浅拷贝,如果 form 的属性值也是对象,那么这些属性值对象并没有被复制,而仍然是通过引用连接的:

let form = { a: 1, b: 2, c: { d: 4 }};
let form_copy = { ...form };
form_copy.c.d = 5;
console.log(form);     // 输出 { a: 1, b: 2, c: { d: 5 }}

如上所示,当我们修改 form_copy 对象中的 c.d 属性时,原对象 form 中的 c.d 也发生了改变,因为 {...form} 只进行了浅拷贝。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值