• es6:阮一峰教程学习


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


    一:块级作用域

    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.深拷贝和浅拷贝?  


  • 相关阅读:
    redis限流器的设计
    使用HystrixCommand封装http请求
    自定义的最简单的可回调的线程任务CallbackableFeatureTask(模仿google的ListenableFutureTask)
    通用的规则匹配算法(原创)(java+.net)
    redis缓存切面实现(支持缓存key的spel表达式)
    使用join和CountDownLatch来等待线程结束
    shell日常实战练习——通过监视用户登陆找到入侵者
    Nginx web服务器
    nginx——防盗链功能
    nginx 隐藏nginx版本号
  • 原文地址:https://www.cnblogs.com/njqa/p/7149136.html
Copyright © 2020-2023  润新知