ECMAScript6

来源:互联网 发布:中国广电网络缴费 编辑:程序博客网 时间:2024/05/17 07:40

Function用法

箭头函数的 this 始终指向函数定义时的 this,而非执行时var f = (o) => {    return o + 2;}var f = (o) =>o + 2;console.log(f(5));console.log((o=>o + 2)(98));

遍历数组

var arr = [213,23,31,12];arr.sb = 'fug';for (let v in arr){//for in 会将后面添加的遍历出现,不建议使用    console.log(v+"="+arr[v]);}//传统forfor of 不会遍历出现sb='fug';//let 作用域仅仅是在for语句里面for (let i =0 ;i<arr.length;i++){    console.log(arr[i]);}for (let v of arr){    console.log(v);}

类语法

class A {    constructor() {        this._r = 5000;    }    fn() {        console.log("这是f的方法");    }    static f2(){        console.log("这是F2的方法");    }    get i(){//属性访问器        return this._r;    }    set i(y){//添加set方法才可以修改        this._r = y;    }}var a = new A(5, 9);a.fn();//这是f的方法A.f2();//静态方法a.i = 5;//修改i,必须配合setconsole.log(a.i);//不是5000class C extends A{    // constructor() {子类不能写构造方法    // }    fn(){ //重写        super.fn();//super指向A中的fn(),但是super不一定必须放在首位        console.log("这是CCC的方法");    }}var c = new C();c.fn()

设置私有

var A = (function () {    var i = Symbol();    return class A{        constructor(){            this[i] = 3000;        }        f(){            console.log("这是F的方法");        }        get i(){            return this[i];        }    }})();var a = new A();a.i = 5; //直接赋值不行console.log(a.i); //3000

代理Proxy

var target ={i:5,j:'abc'}//代理,第一个参数是目标,var proxy =new Proxy(target,{    get : function (target,name) {        return target[name]+'加了';    },    set : function (target,name,value) {        target[name] = value;        return true;    }});proxy.i = 'faeswqe';console.log(proxy.i,proxy.j);

迭代器

var arr = [213, 4, 2, 15];var iter = arr[Symbol.iterator]();console.log(iter.next());console.log(iter.next());console.log(iter.next());console.log(iter.next());console.log(iter.next());//自定义迭代器var o ={    i : 0,    next : function () {        return {value: this.i++,done:this.i>5}    }}//Symbol.iteratordie迭代器属性,属性是函数,return本身//返回值一定要value,doneo[Symbol.iterator] =function () {    return this;}for(let v of o){    console.log(v);}

迭代生成器

//yield相当于return,是暂定执行// 再次调用f()会继续执行function* f() {    var i = 5;    i++;    yield i;    i++;    console.log('中间');    yield i;}for(let v of f()){    console.log(v);}

Set,Map

var set = new Set();set.add(1);set.add(2);set.add(1);set.add(1);console.log(set);// Set { 1, 2 }var map = new Map();map.set('1','斩杀');map.set('2','毒杀');console.log(map);//Map { '1' => '斩杀', '2' => '毒杀' }for(let v of map.keys()){    console.log(v,map.get(v));}//1 斩杀//2 毒杀
0 0
原创粉丝点击