class是用于创建对象的模板。
    (在js中构造函数也能批量创建对象,要注意函数有声明提升,而类没有声明提升,必须先定义类,在创建类的实例)

    定义Animal类。类也是一个函数。
    image.png
    typeof(Animal) // function
    image.png
    对一个类本身来说,要注意以下四点:
    1、构造函数constructor,这个函数用户在创建实例的时候传入参数。(new Animal(“Jerry”, 5))
    2、方法,构造函数内部定义方法不需要function关键字。
    3、setter、getter。setter和getter都是有特殊功能的属性,定义的时候分别使用set 关键字和get 关键字来定义,这二者定义的形式很像函数,但它们的用法都是属性的用法(object.key = value)
    4、静态方法,在一个静态方法里调用另一个静态方法可以使用this,这里的this不绑定实例,而是绑定类本身;静态方法要用类调用,而不能用实例调用。
    image.png

    子类(使用 extends 创建子类)
    image.png
    要注意:
    1、子类的constructor函数中如果需要使用this,必须先执行super()方法初始化this。super初始化的参数应与父类constructor的参数相同,这样创建子类实例的时候才能对应上。
    2、子类中与父类的同名方法是覆盖关系,即子类方法覆盖父类方法。
    3、子类与父类同名getter和setter是覆盖关系。
    4、子类与父类的同名静态方法也是覆盖关系。