zoukankan      html  css  js  c++  java
  • 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对象是拿不到结果的),在静态方法中,指向父类本身

  • 相关阅读:
    恭喜,贺喜,同喜
    IIS 原理学习
    ASP.NET Ajax 学习(一)服务器端部分
    一张图片引发的血案
    poj 2828 Buy Tickets
    hdu 1556 Color the ball
    nyoj 求余数
    hdu 1358Period
    hdu 3577Fast Arrangement
    poj2752 Seek the Name, Seek the Fame
  • 原文地址:https://www.cnblogs.com/secretAngel/p/9699703.html
Copyright © 2011-2022 走看看