constructor

constructor()方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法
一个类必须有constructor()方法,如果没有显式定义,一个空的constructor()方法会被默认添加
如果:定义了一个空的类Parent,JavaScript 引擎会自动为它添加一个空的 constructor()方法

  1. class Parent {}
  2. // 等同于
  3. class Parent {
  4. constructor() {}
  5. }
  6. new Parent() instanceof Parent // true

constructor()方法默认返回实例对象(即this),完全可以手动指定返回另外一个对象
结果会导致实例对象不是 Parent类的实例

  1. class Parent {
  2. constructor() {
  3. return Object.create(null)
  4. }
  5. }
  6. new Parent() instanceof Parent // false

static

不用new也可以调用的方法

get

set

extend

子类继承父类

  1. class Child extends Parent {
  2. constructor() {
  3. super()
  4. }
  5. }

在 super() 执行时,它指向的是 子类 Child 的构造函数,而不是父类 Parent 的构造函数
super() 内部的 this 指向的是 Child

super中 this的指向

通过 super 调用父类的方法时,super 会绑定子类的 this
在普通方法中,指向父类的原型对象;在静态方法中,指向父类