Node.js首页推荐

ES6新特性整理

2017-12-28  本文已影响3人  爱敷面膜的developer

一、生成器(实现了迭代器):

1、声明方式:*例如:function *foo(){}。

  2、功能:交互式运行代码,在程序运行过程中可以暂停并返回内容,外部也可以向程序内部传递参数让程序继续运行。

     3、yield关键字:表示暂停程序并返回内容。

4、yield *关键字yield*后接生成器将生成器插入当前代码段,yield *后接迭代器则迭代其中内容并将每一项解析为yield item;插入当前代码段。

     5、调用生成器时使用return:表示提前完成,中止生成器。

     5、例如:

          function *foo(){

              var x = 3,y = 4;

               var z = yield 3 * 4;

               console.log(z); 

          }

          var it = foo();

          it.next();    // 启动生成器,运行到第一个yield并得到{value:12,done:false};

          // it.return();    // 如果使用该方法会提前中止生产器,并得到{value:undefined,done:false}

          it.next(5);     // 继续运行并传入5(为z赋值为5),得到{value:undefined,done:true}

二、类:

     1 、声明方式:class foo {}

     2、constructor:表示类的构造函数。初始化类,如:constructor(a,b) {this.x = a; this.y = b;}。

     3、extends和super:表示继承,其中super()必须写到this调用之前,super用来调用父类属性(调用变量:super(a,b),调用方法:super.gimme())。

     4、new.target:表示最小调用类(也就是子类)的静态属性和方法。

     5、例如:

class Foo {

constructor

(a,b) {this.x = a;this.y = b;}

gimmeXY

() {return this.x * this.y;}

}

class Bar extends Foo {

    constructor(a,b,c) {super( a, b );this.z = c;}

gimmeXYZ

() {return super.gimmeXY() * this.z;}}

var b = new Bar( 5, 15, 25 );

b

.x;                        // 5

b

.y;                        // 15

b.z;                        // 25

b.gimmeXYZ();               // 1875

三、数据类型:

     1、Buffer和Buffer的多视图:

          1-1、创建Buffer:new ArrayBuffer(len(buffer长度));

          1-2、创建Buffer多视图:

               Int8Array()(8位有符号整型)

Uint8Array()(8位无符号整型)

Uint8ClampedArray()(8位无符号整型,每个值都会被设置在0~255之间)

               Int16Array()(16位有符号整型)

Uint16Array()(16位无符号整型)

               Int32Array()(32位有符号整型)

Uint32Array()(32位无符号整型)

Float32Array()(32位有符号浮点数,IEEE-754)

Float64Array()(64位无符号浮点数,IEEE-754)

               例如:

var buf = new ArrayBuffer( 2 );

var view8 = new Uint8Array( buf );var view16 = new Uint16Array( buf );

view16

[0] = 3085;

view8

[0];                       // 13

view8

[1];                       // 12

view8

[0].toString( 16 );        // "d"

view8

[1].toString( 16 );        // "c"

// 交换(就像大小端变换一样!)var tmp = view8[0];

view8

[0] = view8[1];

view8

[1] = tmp;

view16[0];                     // 3340

     2、Map和WeakMap:

          2-1、Map和WeakMap的区别:WeakMap键只能是对象并且是弱持有键,如果对象被删除,则该对象在WeakMap中对应的键值对也被GC。

          2-2、初始化Map:接收参数:一个数组,数组里每一项第一个元素是key值,第二个元素是value。entries()正好有该功能(如:m.entries()得到的内容就是例子中Map()括号里的内容)。

var x = { id: 1 },

    y = { id: 2 };

var m = new Map( [[ x, "foo" ],[ y, "bar" ]] );

m

.get( x );                   // "foo"

m.get( y );                   // "bar"

          2-3、Map方法:

               set():添加键值对,接收参数:一个任何内容(key)、一个任何内容(value)

               get():获取值,接收参数:一个任何内容(key)

               delete():删除键值对,接收参数:一个任何内容(key)

               clear();清除整个Map,不接收参数

               values():得到Map中的值,返回一列值迭代器

               keys():得到Map中的键,返回一列键迭代器

               has():判断Map中是否有指定Key值,接收参数:一个任何内容

          2-4、Map属性:

               size:获取Map中键值对数量

2-5、初始化WeakMap:接收参数:一个数组,数组里每一项第一个元素是key值,第二个元素是value。entries()正好有该功能(如:m.entries()得到的内容就是例子中Map()括号里的内容)。

var x = { id: 1 },

    y = { id: 2 };

var m = new WeakMap( [

    [ x, "foo" ],[ y, "bar" ]] );

m

.get( x );                   // "foo"

m

.get( y );                   // "bar"

          2-6、WeakMap方法:和Map相比没有clear()方法

2-7、WeakMap属性:和Map相比没有size属性

     3、Set和WeakSet:

          3-1、Set和WeakSet的区别:WeakSet是弱持有,如果WeakSet中的内容是对象,且该对象被删除,则在WeakSet中也被GC。

          3-2、初始化Set:接收参数:一个数组(普通数组或者一个iterable数组)每一项是一个任何内容。

var s = new Set( [1,2,3,4,"1",2,4,"5"] ),

uniques

= [ ...s ];

uniques;                        // [1,2,3,4,"1","5"]

          3-3、Set方法:(Set的方法和Map的方法类似只是add()方法替代了set()方法,并且没有get()方法)

          3-4、Set属性:Set的属性和Map的属性相同

          3-5、初始化WeakSet:不接收参数

var s = new WeakSet();

var x = { id: 1 },

y

= { id: 2 };

s

.add( x );

s

.add( y );

x

= null;                      // x可GC

y = null;                      // y可GC

          3-6、WeakSet方法:和Set相比没有clear()方法。             

          3-7、WeakSet属性:和Set相比没有size属性。

上一篇下一篇

猜你喜欢

热点阅读