前端笔记(二)
解构:es6允许按照一定模式,从数组和对象中提取值,对变量进行赋值。
对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由他的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。
变量解构赋值的用途:交换变量的值,从函数返回多个值,函数参数的定义,提取json数据,函数参数的默认值,遍历map解构,输入模块的指定方法。
es5中的数据结构,主要是用array和object。在es6中主要新增了set和map数据结构。
能使用map的优先使用,不使用数组,考虑数据的唯一性,考虑使用set,不使用object。
symbol:功能类似于一种标识唯一性的id。通常情况下,我们可以通过调用symbol()函数来创建一个symbol实例。每个symbol实例都是唯一的。当你比较两个symbol实例的时候,将会返回false。
symbol的用途:使用symbol来作为对象属性名,使用symbol来定义常量,使用symbol来定义类的私有属性和方法。
注册和获取全局symbol
通常情况下,我们在一个浏览器窗口中,使用symbol()函数定义和symbol实例就足够了。但是,如果你的应用涉及到多个window(最典型的就是页面中使用iframe),并需要这些window中使用的某些symbol是同一个,那就不能使用symbol()函数了,因为用它在不同window中创建的symbol实例总是唯一的,而我们需要的是在所有这些window环境下保持一个共享的symbol。这种情况下,我们就需要使用另一个api来创建或获取symbol,那就是symbol.for(),它可以注册或获取一个window间全局的symbol实例;
参考网址:
去除数组的重复成员:[...new set(array)]
去除字符串里面的重复字符:[...new set('ababbc')].join('')
array.from可以将set结构转为数组:const items = new set([1, 2, 3, 4, 5]); const array = array.from(items);
这就提供了去除数组重复成员的另一种方法。 function dedupe(array) { return array.from(new set(array)); } dedupe([1, 1, 2, 3]) // [1, 2, 3]
set.prototype.keys():返回键名的遍历器
set.prototype.values():返回键值的遍历器
set.prototype.entries():返回键值对的遍历器
set.prototype.foreach():使用回调函数遍历每个成员
对象的扩展运算符:用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中。
如果扩展运算符用于数组赋值,只能放在参数的最后一位,否则会报错。
扩展运算符还可以将字符串转为真正的数组,
[...'hello'] // [ "h", "e", "l", "l", "o" ]
任何iterator接口的对象,都可以用扩展运算符转为真正的数组。
扩展运算符(spread)是三个点(…)。它好比rest参数的逆运算,将一个数组转为用逗号分隔的参数序列。
扩展运算符的应用:
1:合并数组2:与解构赋值结合使用
上一篇: 分布式主键解决方案之--Snowflake雪花算法
下一篇: JqueryOn绑定事件方法介绍