- 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()
}
}
- JS 类继承是一个类扩大另一个类的一种形式, 使用关键字 extends 实现。因而,咱们能够在现有性能之上创立新性能。
- exntends
关键字 extends
应用了很好的旧的原型机制进行工作。它将 Child.prototype.[[Prototype]]
设置为 Father.prototype
。所以,如果在 Child.prototype
中找不到一个办法,JavaScript 就会从 Father.prototype
中获取该办法。
- 如果一个类扩大了另一个类并且没有
constructor
,那么将生成上面这样的“空”constructor
class Child extends Father {
// 为没有本人的 constructor 的扩大类生成的
constructor(...args) {super(...args);
}
}
- super()的工作模式就是
this._proto_.method_name().call(this)
, 这里 this._proto_
就是father._proto_
- HomeObject
当一个函数被定义为类或者对象办法时,它的 [[HomeObject]]
属性就成为了该对象。而后 super
应用它来解析(resolve)父原型及其办法。这样解决了继承链条调用办法的问题
在 JavaScript 语言中 [[HomeObject]]
仅被用于 super
。所以,如果一个办法不应用 super
,那么咱们依然能够视它为自在的并且可在对象之间复制。然而用了 super
再这样做可能就会出错。