es6:阮一峰教程学习

烈酒焚心 提交于 2020-01-11 11:00:36

 

全局作用域 函数作用域 块级作用域


一:块级作用域

1.外层作用域无法读取内层作用域的变量

2.let const声明的变量只能先声明,后使用。 let const都是块级作用域!

 const声明的变量必须赋初始值且不可变,像final! 不可变是指引用不可变,也就是内存中的那片地址。

Object.freeze(要冻结对象) 引用指向的对象不可变哦! const声明引用不可变!

3.es6六种声明变量的方法:var function let const import class

4.模块化编程:封装的思想哦!  作用域

5.顶层对象 全局对象

 

二:变量的解构赋值

1.数组

赋值的时候,进行模式匹配!   就是按照模式匹配的方式来赋值!(解构)

模式不匹配:解构失败

只要某种数据结构是可遍历的,那么就可以进行解构赋值。


2.对象

解构赋值:模式匹配的时候按照key、value匹配。不同于数组是按照索引。


3.字符串

 三:

 

 

五:数组扩展

1.Array.from()方法用于将两类对象转为真正的数组:   类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map)。

2.Array.of()方法用于将一组值,转换为数组。

3.Array.copyWithin()  在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。也就是说,使用这个方法,会修改当前数组。

4.数组实例的find( function(value,index,arr)) 方法:  和filter很像哦!

  数组实例的findIndex()方法的用法与find方法非常类似,返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1

5.数组实例的fill()方法,使用给定的值填充数组。

6.数组实例的遍历:keys()  键名的遍历

                                 values()  键值得遍历

                                 entries()  键值对的遍历

 

六:对象的扩展

1.es6变量和方法的简写

2.Object.is()    “===”的改进版      一是+0不等于-0,二是NaN等于自身。

3.Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。

   同名属性会覆盖,后面的覆盖前面的。

4.Object.assign拷贝的属性是有限制的,只拷贝源对象的自身属性(不拷贝继承属性),也不拷贝不可枚举的属性enumerable: false)。  ??????

 有一些函数库提供Object.assign的定制版本(比如Lodash的_.defaultsDeep方法),可以解决浅拷贝的问题,得到深拷贝的合并。

   

 

七:Symbol  JavaScript的第七种数据类型.

 

       Number    String     Object     Boolean   Undefined      Null

 

八:Set和Map数据结构

1.Set不会添加重复的值!  

2.WeakSet: 首先,WeakSet 的成员只能是对象,而不能是其他类型的值。

                     其次,弱引用,引用存在也会被GC机制回收。

3.Map: 本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。 

 WeakMap:  首先,WeakMap只接受对象作为键名(null除外),不接受其他类型的值作为键名。

                      

九:Iterator 和 for...of 循环

1.Javascript表示集合的数据结构:  数组  对象    Map     Set     

   遍历器(Iterator)就是这样一种机制。它是一种接口,为各种不同的数据结构提供统一的访问机制。

 

十:Promise对象

1.有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免层层嵌套的回调函数。

2.Promise对象,容器,里面保存着某个未来才会结束的事件的结果。

3.Promise对象代表一个异步操作,三种状态:Pending、Resolved、Rejected。  一个异步操作是一个对象。

   异步操作的结果才可以更改状态。    

   状态一旦改变就会凝固。

4.then()方法:它的作用是为 Promise 实例添加状态改变时的回调函数。前面说过,then方法的第一个参数是Resolved状态的回调函数,第二个参数(可选)是Rejected状态的回调函数。

   pending-》resolved      pending-》rejected:状态改变执行回调! 

5.jQuery的所有Ajax操作函数,默认返回的就是一个deferred对象。

6.Promise.resolve()    有时需要将现有对象转为Promise对象,Promise.resolve方法就起到这个作用。

 

 

十一:Class

1.类的数据类型是函数,且类本身指向构造函数

2.由于类的方法都定义在prototype对象上面

3.表达式就是变量?      就是一个赋值表达式?  

4.constructor:类的构造函数,constructor方法默认返回实例对象(即this),完全可以指定返回另外一个对象。

 

 

十二:Reflect对象 

1.Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。

2.函数式行为!   语言的一种完善! 

 

十三:Proxy对象

1.对象的拦截器    访问对象时候的代理。

 

ES6 知识点总览:

let/const     变量的解构赋值      字符串扩展      正则扩展      数值扩展     函数扩展    数组扩展     对象扩展      Symbol      Set和Map数据结构       Promise对象     Class

模块加载方案    Proxy   Reflect

 

 

 

 

 

 

 

 

发现的问题

1.可遍历解构? Iterator

2.重载和覆盖?     好久没看都忘记了啊! 

3.深拷贝和浅拷贝?  


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!