- 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
再这样做可能就会出错。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。