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
  • 相关阅读:
    HLJU 1221: 高考签到题 (三分求极值)
    [视频解说]Java(JDK的下载安装及第一个程序执行)
    llvm中如何利用分支概率和基本块频率估计
    Nginx SSL TLS部署最佳实践
    Nginx使用教程(一):Nginx编译参数详解
    Nginx使用教程(一):下载并编译安装Nginx
    nginx使用ssl模块配置HTTPS支持
    Linux下安装Tomcat服务器和部署Web应用
    TOMCAT-报错The BASEDIR environment variable is not defined correctly
    Kafka vs RocketMQ——多Topic对性能稳定性的影响-转自阿里中间件
  • 原文地址:https://www.cnblogs.com/mooniitt/p/6340390.html
Copyright © 2011-2022 走看看