ES6 语法学习(二)

时间:2022-09-15 17:21:48

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);
}
}