1、面向对象(基础)
①class关键字、构造器和类分开了
②class里面直接加方法

传统的面向对象老版本是这样的:

function User(name,pass){
    this.name = name;
    this.pass = pass
}

User.prototype.showName = function(){
    alert(this.name)
}
User.prototype.showPass = function(){
    alert(this.pass)
}

var u1=new User('blue','123456')
u1.showName();
u1.showPass();

问题:
1.在原来的JavaScript里面,是不是类和构造函数是一个东西。User是不是构造函数?是,User是构造函数,User是不是类,也是,也是类,这就很奇怪。
2.类散开了。

新版本写法:

class User{
    //构造器
    constructor(name){
        this.name=name;
        this.pass=pass;
    }
    
    showName(){
        alert(this.name);
    }
    showPass(){
        alert(this.pass);
    }
}

继承:

老版本继承:

function VipUser(name,pass,leavel){
    User.call(this,name,pass);
    this.level=level;
}
VipUser.prototype=new User();
VipUser.prototype.constructor=VipUser;

VipUser.prototype.showLeavel=function(){
    alert(this.level)
}
var v1=new VipUser('tom','123456',3)
v1.showName()
v1.showPass();
v1.showLeavel();

新版本继承:
class VipUser extends User{

constructor(name,pass,level){
    // 超类/父类
    super(name,pass);
    this.level=level;
}

showLevel(){
    alert(this.level)
}

}

2、Promise

解决回调地狱,用同步一样的方式,来书写异步代码。
Promise.all([$.ajax(),$.ajax()]).then(result=>{
    //对了
},err=>{
    //错了
})

Promise.race 竞速
假设:
以下的请求代表同时发出多个请求,哪个先获得数据就用哪个。

Promise.race([
    $.ajax({url:'http://a2.taobao.com/data/users'}),
    $.ajax({url:'http://a5.taobao.com/data/users'}),
    $.ajax({url:'http://a3.taobao.com/data/users'}),
])

soso辉
84 声望2 粉丝