ES6中的`super`关键字是类继承的重要组成部分,它允许子类访问并调用父类的方法和属性。本文将深入探讨`super`的关键字用法,包括作为函数和对象的两种情况。 `super`作为函数使用时,通常出现在子类的构造函数中。在子类`B`继承自父类`A`的情况下,`super()`表示调用父类的构造函数,确保父类的初始化工作得以完成。例如: ```javascript class A { constructor() { console.log(new.target.name); } } class B extends A { constructor() { super(); // 这里的super相当于A类的constructor构造函数,此时的this指向B // 这行代码实际上等同于es5的A.prototype.constructor.call(this) } } new A(); // 输出 "A" new B(); // 输出 "B" ``` `super()`在子类的构造函数中被调用时,它代表了父类的构造函数,并且其内部的`this`指向子类实例,确保了子类可以继承并扩展父类的特性。 `super`作为对象使用时,分为在普通方法和静态方法中使用两种情况。在普通方法中,`super`指向父类的原型`A.prototype`,可以访问父类原型上的方法和属性。例如: ```javascript class A { constructor() { this.x = 1; } print() { console.log(this.x); } } class B extends A { constructor() { super(); this.x = 2; } m() { super.print(); // 调用A.prototype.print() } } let b = new B(); b.m(); // 输出 "2" ``` 在`super.print()`调用时,虽然实际执行的是`A.prototype.print()`,但`A.prototype.print()`内部的`this`会指向子类`B`的实例。 对于静态方法,`super`则有所不同。在静态方法中,`super`不再指向父类的原型,而是直接指向父类本身。这意味着在静态方法中,`super`可以用来调用父类的静态方法,而不会涉及到实例: ```javascript class Parent { static myMethod(msg) { console.log('static', msg); } myMethod(msg) { console.log('instance', msg); } } class Child extends Parent { static myMethod(msg) { super.myMethod(msg); // 调用Parent.myMethod() } myMethod(msg) { super.myMethod(msg); // 在这里会报错,因为不能在实例方法中调用super来访问静态方法 } } Child.myMethod(1); // 输出 "static 1" var child = new Child(); child.myMethod(2); // 报错,因为不能通过super在实例方法中调用静态方法 ``` `super`关键字在ES6的类继承中起到了关键作用,它既能在子类的构造函数中调用父类的构造函数,也能在普通方法和静态方法中访问父类的成员。理解`super`的正确使用方式,对于编写可维护和扩展的JavaScript代码至关重要。

























- 粉丝: 4
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 四层电梯模型PLC控制系统设计.doc
- 网络摄像机餐饮行业(饭店)远程监控方案-公共场所其他.docx
- 成人院校计算机专业教学革新与实践构想分析.docx
- 软件产品集成管理.docx
- 张梦野-新桥中学网络设计方案.doc
- 网络银行的法律风险及防范对策.docx
- 基于物联网技术的农业节水灌溉控制系统方案研究设计.doc
- 浅析微软的MMLSpark技术.docx
- 《计算机组成与体系结构》MOOC课程建设探索.docx
- Android多媒体播放器课程设计方案报告.doc
- PLC直线插补课程设计2011.doc
- 数字电路后端设计逻辑综合资料.ppt
- 大数据教学平台建设规划.docx
- 高中生深度学习的化学教学实践探究.docx
- 单片机报告秒表设计终.doc
- 电气工程及其自动化技术在供热建设中的难点分析.docx


