ES6 语法学习(二)

1、类的建立与继承

constructor方法是类的构造函数是默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个默认的constructor方法会被添加。所以即使你没有添加构造函数,也是有默认的构造函数的。一般constructor方法默认返回实例对象this,但是也可以指定constructor方法返回一个全新的对象,让返回的实例对象不是该类的实例

<script>
//注意,在书写ES6的类的时候,方法与方法之间是不能添加逗号的。
class Test {
    //constructor方法是类的构造函数是默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个默认的constructor方法会被添加。
    constructor(name, age) {
        //new.target 在类中返回的是test这个类,而不是实例化的类,可以通过new.target对静态方法的调用,在类里面也可以通过this.constructor对静态方法调用
        // console.log(new.target.say);
        //也可以判断是否是实例化后的实例
        console.log(this instanceof new.target);
        this.name = name;
        this.age = age;
    }

    //通过返回this实现链式调用
    asw() {
        console.log(`my name is ${this.name},my age is ${this.age}`);
        return this;
    }

    //静态方法前面要添加static进行修饰,同时里面的this表示test这个对象而不是实例化后的类
    //目前ES6未实现静态变量的定义,可以通过test.变量的形式进行定义
    static say() {
        console.log(this.other);
    }

    static other(name, age) {
        if (!(this instanceof Test)) {
            return new Test(name, age);
        }
    }
}

//在继类的时候用extends字实现子类对父类的继承
class Person extends Test {
    constructor(name, age, sex) {
        //调用super关键字实现属性的继承
        super(name, age);
        this.sex = sex;
    }

    ask() {
        //通过super关键字调用父类的方法
        super.asw();
        console.log('are you ok???');
    }
}

//静态属性的调用
Test.say();
//利用静态方法实现类的实例化
Test.other('ccc', 36).asw();
// new Test('aaa', 30).asw();
// new Person('bbb', 20).asw().ask();

 2、async...await的简单使用

//实现自动调用
(async function () {
    try {
        let m = await $.get('./url');
        console.log(m);
    } catch (err) {
        console.log(err);
    }
})();

//用函数的形式调用
async function test() {
    try {
        let m = await $.get('./url');
        console.log(m);
    } catch (err) {
        console.log(err);
    }
}
原文地址:https://www.cnblogs.com/rickyctbu/p/10056455.html