系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 网络编程 > JavaScript > 详细页面

es6 super关键字的理解与应用实例分析

时间:2020-02-15来源:系统城作者:电脑系统城

本文实例讲述了es6 super关键字的理解与应用。分享给大家供大家参考,具体如下:

前面介绍了static关键字,class类还有另外一个关键字super

super不仅仅是一个关键字,还可以作为函数和对象。

函数:在子类继承父类中,super作为函数调用,只能写在子类的构造函数(constructor)里面,super代表的是父类的构造函数,

难点理解

但是执行过时supre()代表的是子类,super()里面的this指向子类的实例对象this。


 
  1. class A {
  2. constructor() {
  3. console.log(new.target.name);
  4. }
  5. }
  6. class B extends A {
  7. constructor() {
  8. super();//这里的super相当于A类的constructor构造函数,会执行A的constructor,但是此时的this指
  9. //向的是B,所以打印出B
  10. //换一种方法理解是:在执行super时,A把constructor方法给了B,此时B有了A的功能,但是执
  11. //行的是B的内容,也就是es5的A.prototype.constructor.call(this)。
  12. }
  13. }
  14. new A() // A
  15. new B() // B
  16.  

对象:

这里重点理解下对象,概念相对抽象

super作为对象使用时,分为在普通方法中使用和在静态方法中使用

在普通方法找中使用:super指向父类的原型,即A.prototype,可以访问到原型上的方法和属性

逻辑抽象一:

ES6 规定,在子类普通方法中通过super调用父类的方法时,方法内部的this指向当前的子类实例。


 
  1. class A {
  2. constructor() {
  3. this.x = 1;
  4. }
  5. print() {
  6. console.log(this.x);
  7. }
  8. }
  9. class B extends A {
  10. constructor() {
  11. super();
  12. this.x = 2;
  13. }
  14. m() {
  15. super.print();
  16. }
  17. }
  18. let b = new B();
  19. b.m() // 2
  20.  

super.print()虽然调用的是A.prototype.print(),但是A.prototype.print()内部的this指向子类B的实例

super作为对象,用在静态方法之中,这时super将指向父类,而不是父类的原型对象。


 
  1. class Parent {
  2. static myMethod(msg) {
  3. console.log('static', msg);
  4. }
  5. myMethod(msg) {
  6. console.log('instance', msg);
  7. }
  8. }
  9. class Child extends Parent {
  10. static myMethod(msg) {
  11. super.myMethod(msg);
  12. }
  13. myMethod(msg) {
  14. super.myMethod(msg);
  15. }
  16. }
  17. Child.myMethod(1); // static 1
  18. var child = new Child();
  19. child.myMethod(2); // instance 2
  20.  

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

分享到:

相关信息

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载