• Constructor in JavaScript
class Class_Name {
    constructor([arguments]) {...}
}

1.一个Class只能有一个constructor,如果没有定义,则会使用默认constructor
2.子类继承父类后使用super来调用父类的构造方法
在构造函数中访问this之前一定要调用super(),它负责初始化this,如果在调用super()之前尝试访问this会导致程序出错
class Child_Class_Name extend Class_Name{

constructor([arguments]) {
    super()
}

}

  1. JS类继承是一个类扩展另一个类的一种方式, 运用关键字extends实现。因此,我们可以在现有功能之上创建新功能。
  2. exntends

关键字 extends 使用了很好的旧的原型机制进行工作。它将 Child.prototype.[[Prototype]] 设置为 Father.prototype。所以,如果在 Child.prototype 中找不到一个方法,JavaScript 就会从 Father.prototype 中获取该方法。

  1. 如果一个类扩展了另一个类并且没有 constructor,那么将生成下面这样的“空” constructor
class Child extends Father { 
    // 为没有自己的 constructor 的扩展类生成的       
    constructor(...args) { 
        super(...args); 
    }
}
  1. super()的工作模式就是

this._proto_.method_name().call(this),这里this._proto_就是father._proto_

  1. HomeObject

当一个函数被定义为类或者对象方法时,它的 [[HomeObject]] 属性就成为了该对象。然后 super 使用它来解析(resolve)父原型及其方法。这样解决了继承链条调用方法的问题
在 JavaScript 语言中 [[HomeObject]] 仅被用于 super。所以,如果一个方法不使用 super,那么我们仍然可以视它为自由的并且可在对象之间复制。但是用了 super 再这样做可能就会出错。


猜猜我是谁
18 声望5 粉丝

一个话痨的技术小白