zoukankan      html  css  js  c++  java
  • ES 6

    简介

     Node v4这个版本是Node和iojs合并后发布的首个稳定版本,并且为开发者带来了大量的ES6语言扩展。了解 Node.js中包括的ES6语言扩展。本课将会为你介绍如何使用这些新特性。

      Node.js 4.0.0 可以让您享受最尖端的技术,保持项目的先进性。其中对 v8 的升级几乎做到了与 Chromium / Google Chrome 同步,达到了 4.5.x,它提供了很多新的语言功能。ECMA-262 是 JavaScript 语言规范的最新版本,而且好多新特性数都是开箱即用的。这些新特性包括

    1. 'use strict' :避免javascript上的一些陷阱,严格模式比非严格模式更加迅速,禁用了一些未来可能的语法
    2. let : var 不具备块级作用于的功能,只能用于函数内, let具有块级作用的功能如 {}
    3. const : 常量声明,作用于同let一样,其值不在变化

    类:

    1. class : 类声明 class foo(){constructor(){}}, var f = new foo()
    2. 类表达式 : 匿名类表达式,var ploygon = class {},命名类表达式,var ploygon =class ploypon(){}
    3. static : 静态方法,var ploygon = class{constructor(){},static fn(){}},只能对象调用
    4. extends : 创建继承于某个类的子类 class a extends b{}

    map:

    1. map : var m = new map([[键,值],[键,值]],...),存储键/值对,有size,set,get,has,delete,clear方法
    2. map便历方法 : keys遍历所有的键,values遍历所有的值,entries遍历所有的键值,forEach(function(){})遍历所有的键值
    3. for(var i of s) : 遍历s对象所有的值,for(var [x,y] of s)遍历s对象所有的键值
    4. for(var i in s) : 遍历s对象所有的键
    5. WeakMap : 以对象作为键,只有get,set,delete,has方法
    6. Set : 一种新的数据结构,类似数据,不会存贮重复的值,不会做类型装换及5,'5'是两个不同的值,有add,delete,clear,has方法,有constructor,size属性
    7. Set遍历方法 :keys,values,entries,forEach
    8. WeakSet : 只能存放对象只有add,delete,has方法没有size,constructor属性

    Generator:

    1. generator : (状态机),有两个特征1,function* fn(){}表示generator  2,大括号{}内用yield = ''表示内容 。有next方法返回一个对象返回一个对象属性value表示yield表示的值,done表示是否迭代完毕,false表示还没完,true表示已经迭代完毕
    2. yield* : 用于generator内部嵌套一个generator,function* fin(){yield 'hello',return },function* fout(){yield* fin}

    Promise:

    1. promise : 用来处理异步操作,有两个特点 1:有三种状态 Pending(进行中),Resolved(以结束,又称为Fulfilled),Rejected(未完成,以失败),三种状态只能异步操作才能打断 2:只有两种变化从Pending到Resolved和Pending到Rejected,并且变化一旦发生就不能更改了
    2. 基本用法 : 写法比较固定,var p = new Promise(function(resolved,reject){/*some code*/  if(true){resolved('string')}else{rejected('string')}}),有个then方法p.then(successedfunction,filedFunction)两个回调函数参数1表示Pending->Resolved后调用,参数2Pending->Rejected后调用,方法catch的示意图。
    3. then方法返回promise对象,所以可以进行链式调用
    4. catch方法只有当Pending->Rejected的时候才返回一个promise对象,才可进行链式调用,通过throw抛出异常后再调用catch
    5. all方法参数可以是数组或者含有iterator接口的数据结构,成员都是Promise的实例,只有到所有的成员都返回Resolved状态的时候(类似于与门),all才返回Resolved否则返回Rejected
    6. race方法参数同all方法一样,返回最新状态变化的那个成员(不管是从Pending->Resolved,还是Pending->Rejected),改成员时promise对象(类似于或门)
    7. reject方法,参数为reason返回一个promise对象
    8. resolve方法,参数value,可以用then方法跟随者个value

    Symbol :

    1. 添加一种数据类型Symbol,原有的javascript数据类型有6种:Undefined,Null,Object,Boolean,String,Number
    2. symbol作为属性名时只能放在[]内,不能利用.来获取。
    3. symbol不能利用for(var i in s)或者for(var i of s)来获得属性值,只能通过Object.getOwnPropertySymbols方法来获取,形参为含有Symbol属性的对象
    4. Symbol.for()与Symbol()的区别:var s1 = Symbol('foo'),var s2 = Symbol('foo'),s1 不等于 s2; var s1 = Symbol.for('foo'),var s2 = Symbol.for('foo'),s1等于时s2
    5. Symbol.keyFor方法查询已登记的Symbol.for()的值,var s1 = Symbol.for('foo'),Symbol.keyFor(s1)等于foo,不能用于查询到登记Symbol()的值

    箭头函数:

    1. ()=>{}等于function(){}, s=>s等于function(s){return s},(s1,s2)=>{s1+s2}等于function(s1,s2){return s1+s2},就是一个语法糖。
    2. 箭头函数注意点:1,箭头函数内部的this不可变;2,不能当作构造函数使用,及不能使用new; 3,行数内部不存在arguments对象,可用Rest对象代替;4,不用使用yield命令,所以就不用用于generator

    模板字符串:

    1. 利用 ` 符号,键盘Tab上方的那个键,内部可以使用${expression}来占位,s = `hello ${`world`}`,s = 等于hello world
    2. 多行字符串 : 字符串内会保留换行符
    3. 表达式插补 : 字符串和表达式拼接的时候更加美观,方便 var a=1,b=1,  利用字符串拼接sum = 'hello' + (a+b) + 'world' ,利用模板字符串 `hello ${a+b} world`
    4. 带标签处理 :声明一个function tag(){},利用tag`hello 13${expression} world}`就可以执行,可以获取arguments对象,以每个${}为界限['0':'以${}生成的数组对象','1':'第一个${}','2':'第二个${}']
    5. 通过调用String.raw()来获取原始的字符串,String.raw`hello ${'world'}` 得到 hello world

    字符Unicode表示:

    1. 'uxxxx' : xxxx 为码点, 可利用 u{xxxx}表示
    2. String.fromCodePoint():从码点反应对应的字符,fromCodePoint方法在String对象上,codePointAt方法是在String的实例对象上
    3. 确定字符串是否在另一个字符串内部,传统上,只有indexOf()方法; ES6又提供了额外的三种方法,include,startWith,endWith,返回值都是Boolean类型
    4. 字符串的repeat方法,参数为重复的次数; s = 'a' ,s.repeat(2)返回aa
  • 相关阅读:
    【leetcode】1215.Stepping Numbers
    【leetcode】1214.Two Sum BSTs
    【leetcode】1213.Intersection of Three Sorted Arrays
    【leetcode】1210. Minimum Moves to Reach Target with Rotations
    【leetcode】1209. Remove All Adjacent Duplicates in String II
    【leetcode】1208. Get Equal Substrings Within Budget
    【leetcode】1207. Unique Number of Occurrences
    【leetcode】689. Maximum Sum of 3 Non-Overlapping Subarrays
    【leetcode】LCP 3. Programmable Robot
    【leetcode】LCP 1. Guess Numbers
  • 原文地址:https://www.cnblogs.com/mooniitt/p/6340390.html
Copyright © 2011-2022 走看看