【皇牌天下投注网】学习笔记——super的用法

来源:http://www.prospettivedarte.com 作者:计算机教程 人气:168 发布时间:2019-05-10
摘要:参考文档: 1,super关键字 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/super super:父类的意思 使用方法1:super就是调用一下父类的构造函数 1. super.属性名 (调用父类的属性)

参考文档:

1,super关键字

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/super

  super:父类的意思

使用方法1:super就是调用一下父类的构造函数

  1.  super.属性名 (调用父类的属性)

在类继承extends时,如果子类中存在构造函数,则必须在使用"this"之前首先调用super( ) 不然会报错。

  2.  super.方法名 (调用父类的方法)

class myDate2 extends Date {
  constructor() {
   // 少了super,而下文中使用了this
  }

  getFormattedDate() {
    var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
    return this.getDate()   "-"   months[this.getMonth()]   "-"   this.getFullYear();
  }
}

var x2 = new myDate2() // 报错,哪怕上面去除 getFormattedDate 方法依然会报错

  3.  super([参数列表])(调用父类的构造方法)

使用super后不仅可以调用父类的构造函数,还可以直接通过super调用父类的方法。

  注意:a.  super关键字使用在子类中

使用方法2:调用父类上的静态方法

     b.  子类继承了父类,则父类中的公有的属性,方法,就是子类的属性和方法.所以在子类中使用super.属性 和super.方法 ,与this.属性 和this.方法,就没有啥区别.

// 先介绍一下类的静态方法
// 1. static 关键字用来定义一个类的一个静态方法。
// 2. 调用静态方法不需要实例化该类,但不能通过一个类实例调用静态方法。
// 3. 静态方法通常用于为一个应用程序创建工具函数。

class Point {
    constructor(x, y) {
        this.x = x;
        this.y = y;
    }

    static distance(a, b) {
        const dx = a.x - b.x;
        const dy = a.y - b.y;

        return Math.hypot(dx, dy);
    }
}

const p1 = new Point(5, 5);
const p2 = new Point(10, 10);

console.log(Point.distance(p1, p2));

     c.  子类对象创建时,必须先创建父类对象. 即super() 被系统默认的隐含的添加在子类构造的第一行

举例:

     d.  super([参数])必须出现在子类构造函数中的第一行. 所以this() ,super() 不可能同时出现在一个构造函数中.

class Human {
  constructor() {}
  static ping() {
    return 'ping';
  }
}

class Computer extends Human {
  constructor() {}
  static pingpong() {
    return super.ping()   ' pong'; 
  }
}
Computer.pingpong(); // 'ping pong'

 

2,this关键字

其他注意点:

  1.站在类内看this 

本文由皇牌天下投注网发布于计算机教程,转载请注明出处:【皇牌天下投注网】学习笔记——super的用法

关键词:

最火资讯