资讯专栏INFORMATION COLUMN

es6基础0x007:展开

RyanQ / 2749人阅读

摘要:概述展开符号真的是一个非常好用的东西,我常用于字符串分割数组合并数组拷贝对象合并对象拷贝。

0x000 概述

展开符号真的是一个非常好用的东西,我常用于字符串分割、数组合并、数组拷贝、对象合并、对象拷贝。

0x001 语法
...iterableObj
0x002 函数调用的时候参数展开

这是在函数调用的时候,将参数展开,和剩余参数有区别,剩余参数是在函数声明中使用

myFunction(...iterableObj);    

案例

function add(a, b){
    return a + b
}
add(...[1,2]) // 相当于 add(1,2) -> 3
0x003 数组声明展开

可用于数组合并

[...[1,2,3],4] // 相当于[1,2,3].push(4) -> [1,2,3,4]
[..."1234"] // 相当于 "1234".split("")
0x004 对象展开

可用于对象合并、对象拷贝

{...{name:1},age:2} // 相当于 Objeact.assign({},{name:1},{age:2}) -> {name:1,age:2}
{...{name:1}} // 相当于 Object.assign({},{name:1}) -> {name:1}
0x005 babel 翻译

字符串/数组展开

源码

[..."1234"]

翻译后

function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }

[].concat(_toConsumableArray("1234"));

对象展开

源码

let a={...{name:1}}

翻译后

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

var a = _extends({ name: 1 });

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/99170.html

相关文章

  • es6基础0x015:for...of

    摘要:概述是一个迭代可迭代对象的方式,可迭代对象包括对象等等语法迭代数组迭代字符串迭代迭代迭代迭代集合总结只能迭代可迭代对象 0x000 概述 for...of是一个迭代可迭代对象的方式,可迭代对象包括Array、Map、Set、String、TypedArray、arguments 对象等等 0x001 语法 for(variable of iterable){ // statem...

    luxixing 评论0 收藏0
  • es6基础0x012:Map

    摘要:概述也是一个新的数据结构,在中其实也经常用到,比如下面的栗子,我们经常这么使用一个对象,与其说他是对象,其实他更像一个,但是比起真正的,这个还是有点弱了,初始化初始化一个有一个可选的参数,该参数必须是一个可迭代对象,可迭代对象包括和用户定 0x000 概述 Map也是一个新的数据结构,在js中其实也经常用到,比如下面的栗子,我们经常这么使用一个对象,与其说他是对象,其实他更像一个Map...

    DesGemini 评论0 收藏0
  • es6基础0x021:反射

    摘要:概述反射说起来和上一章节的代理基本一样,只是使用的方式不同,设计理念也不同。 0x000 概述 反射说起来和上一章节的代理基本一样,只是使用的方式不同,设计理念也不同。 反射提供了一系列的静态函数,可以使用Reflect.function_name(...prams)调用,这一系列的方法和代理的处理器对象方法一致 0x001 apply 语法 Reflect.apply(targ...

    booster 评论0 收藏0
  • es6基础0x009:模板字符串

    摘要:概述模板字符串出来以后,单引号双引号哪个好的争论可以退出历史舞台的,模板字符串的最好语法单行文本多行文本内嵌表达式标签语法不太喜欢单行文本完全不单引号和双引号,当然,转义是不可避免的,有所得必有所失去嘛多行文本,也不用关系换行的编码转化问题 0x000 概述 模板字符串出来以后,单引号、双引号哪个好的争论可以退出历史舞台的,模板字符串的`最好! 0x001 语法 单行文本 `str...

    zhaochunqi 评论0 收藏0
  • es6基础0x011:Set

    摘要:概述是一个新的数据结构,和其他语言的特性差不多,当然,作为中的,他还是有一些属于的特点。 0x000 概述 Set是一个新的数据结构,和其他语言的特性差不多,当然,作为js中的Set,他还是有一些属于js的特点。 0x001 初始化 new Set([iterable]); 初始化一个Set有一个可选的参数,这个参数必须是一个可迭代的对象,可迭代对象包括String、Array、Arr...

    jsyzchen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<