ES6 学习 -- Class继承
(1)如何继承
Class可以通过extends关键字实现继承,如下:
class Father {
}
class Child extends Father {
}
// 这里子类Child继承父类Father的所有属性和方法,当然我们也可以在子类中添加自己的方法和属性。如果在子类中出现关键字super,它在这里表示父类的构造函数,用来新建父类的this对象
// 子类必须在constructor方法中调用super方法,否则构建实例时会报错,这是因为子类没有自己的this对象,必须通过父类的继承拿到this对象,然后对其进行加工,加上子类自己本身的实例属性和方法,最后才能拿到属于子类的this对象
// 子类中默认定义有constructor方法,不管有没有显示定义,任何一个子类都有constructor方法。
// 父类的静态方法也会被子类继承
(2)Object.getPrototypeOf() // 从对象上获取属性,可以用于判断一个类是否继承于另一个类
Object.getPrototypeOf(Child) === Father; // 从子类Child上获取父类Father
(3)super关键字
super关键字,既可以当作函数使用,也可以当作对象使用
①作为函数使用时,super()代表父类的构造函数,ES6规定,子类的构造函数必须执行一次super函数,且super方法只能子类的根作用域下调用,在其他地方调用直接报错,如下
class A {}
class B extends A {
m() {
super(); // 报错,此时的super()是在函数m的作用域下调用的
}
}
②super当作对象使用时,在普通方法中,super指向父类的原型对象(由于指向父类原型对象,所以父类实例调用super对象是拿不到结果的),在静态方法中,指向父类本身
最新文章
- LINQ取复杂列表
- Redis 学习笔记(C#)
- Candies-POJ3159差分约束
- GAudio是一个音频播放SDK
- [Tex学习笔记]积分平均
- Android-Volley详解
- 【技术·水】浅谈Dism++清理插件开发
- Redis数据备份和重启恢复
- Repeated Substring Pattern Leetcode
- sublime 3 build结果关闭打开
- 【Vue】利用父子组件间通信实现一个场景
- ComboBox 中 DisplayMember 和 ValueMember 都是具体干什么的?
- 第十一节,利用yolov3训练自己的数据集
- CS DevExpress程序启动(主窗体初始化优化)
- 用反射的形式将一个对象属性值赋值给另一个对象,省略点get/set方法的冗余代码
- temp--贵州银行
- Centos下配置php环境
- background-color没有none值
- bzoj1212(trie+dp)
- 每日英语:China Pipeline Explosions Kill 52