ES6扩展运算符三个点(...)

    在react或者vue项目中,你或许已经注意到有的地方已经开始使用ES6扩展运算符...,这个运算符很简洁,如果不熟悉,可能会觉着难以理解,这里稍微介绍一下扩展运算符的用法。

    ES6扩展运算符简化了数组或者对象赋值问题,以对象类型为例,我们最早做对象拷贝的时候,需要将一个对象的所有属性一一赋值给新的对象,如果新的对象还有别的属性,需要接着设置:

var obj = {id:1,name:'buejee'}
var obj2 = {};
for( var key in obj){
  obj2[key] = obj[key]
}
obj2.age = 18;
console.log(obj)
console.log(obj2)

     运行这个js,我们得到结果如下:

    { id: 1, name: 'buejee' }
    { id: 1, name: 'buejee', age: 18 }

    当我们有了ES6扩展运算符,赋值问题就变得很简单了,只需要一步就能赋值成功。    

const obj = {id:1,name:'buejee'}
const obj2 = {...obj,age:18}
console.log(obj)
console.log(obj2)

    运行这段代码,同样能够得到上面的结果。

    从这个示例中,我们可以看出扩展运算符...将对象obj={id:1,name:'buejee'}做了拆分,好像拆分为了一个个属性集合,而且没有使用{嵌套},这里如果单独使用obj,得到的结果是这样的:

   

    从截图中可以看出,直接使用obj,而不是...obj,最终的obj2嵌套了obj对象。

    同样的,扩展运算符使用在数组赋值中,也是类似的功能。将数组各个元素单独提取出来,拼接到新的数组中。

arr = [1,2,3]
arr2 = [...arr,4,5,6]
console.log(arr)
console.log(arr2)

    运行这段代码,结果如下:

    [ 1, 2, 3 ]
    [ 1, 2, 3, 4, 5, 6 ]

    以上是使用扩展运算符来做右值赋值,其实他也可以作左值赋值,左值的话,类似做减法,把对象或者数组中剩余的部分赋值给新的变量。我们来看看如下的例子:    

const obj = {id:1,name:'buejee',age:18}
let {id,...info} = obj
console.log(id)
console.log("info =",info)
let [a,b,...c]=[1,2,3,4,5]
console.log(a)
console.log(b)
console.log(c)

    运行这段代码结果如下:

    1
    info = { name: 'buejee', age: 18 }
    1
    2
    [ 3, 4, 5 ]

     通过以上几个简单的例子,我们基本能够搞清楚扩展运算符的用法,使用起来确实很方便。就是有些难以理解。我们在实际应用中需要注意的是,不要把对象和数组搞混淆了。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值