欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

前端笔记(二)

程序员文章站 2022-07-02 12:52:27
解构:ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值。 对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由他的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。 变量解构赋值的用途:交换变量的值,从函数返回多个值,函数参数的定义,提取JSON数 ......

解构: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:与解构赋值结合使用