使用class

 class Miaov{
        constructor (a,b){   //构造对象的时候需要传递的对象
            this.a=a;
            this.b=b;
            return this;  //注意这里的return的值
        }
        print(){
            console.log(this.a+this.b)
        }
    }
    let mm=new Miaov(1,2); 
    mm.print();  //2

同时值得注意的是typeof Miaov 会返回function 所以class 只是一个语法糖
Miaov中的constructor方法是构造方法 this关键字代表的是实例对象 定义在class中的方法都是相当于定义在Miaov.prototype上边

与es5不同的是 es5中的构造函数可以直接调用 但是如果通过es6中的class声明的类不能直接调用

在class中定义的方法都需要return this 这样才可以进行链式调用
一个类必须有constructor 没有的话 class会使用一个空的构造函数(这个构造函数什么都不会做)
定义在类中的方法都是不可以被枚举的

class的继承 extends static super

在子类中的构造函数中必须先通过 super调用父类中的构造函数。值得注意的是与es5完全不同的是不能通过父类.call(this,参数)来实现 因为子类在没有调用父类的constructor之前实例是没有this的。

所以如果在子类的构造函数中需要使用this 必须先使用super() 来生成实例以后再使用this

super这个关键字不能在子类的其他方法中调用 除了子类的构造函数

          当出现在其他非构造方法中的时候  指的是父类的原型对象  不能当做函数调用

子类会继承父类多有的方法(包括静态)
static 方法 就将这个方法指定为静态方法


丹丹赵
298 声望20 粉丝