• ES6深入学习记录(一)class方法相关


    今天学习class相关的一些使用方法,着重在于class extends

     class之间可以通过extends关键字实现继承,这比ES5的通过修改原型链实现继承,要清晰和方便很多。

    上面的代码定义了一个 Test 类,该类通过 extends 关键字,继承了 Point 类的所有属性和方法。但是由于没有部署任何代码,所以这两个类完全一样,等于复制了一个Point类。

    super 方法

    代码中,constructor 方法和 toString 方法之中都出现了 super 关键字,它在这里表示父类的构造函数,用来新建父类的this对象

    子类必须在 constructor 方法中调用 super 方法,否则新建实例时会报错。这是因为子类没有自己的 this 对象,而是继承父类的 this 对象,然后对其进行加工。如果不调用 super 方法,子类就得不到this 对象。说白了,super 方法就是子类继承父类 this 对象的一个方法。

    上面是生成子类实例的代码,实例对象 cd 同时事 Test 和 Point 两个类的实例,这与ES5的行为完全一致。

    类的 prototype 属性 和 __proto__ 属性 (还挺重要的,涉及原型链)

    在es5实现上,每一个对象都有 __proto__ 属性,指向对应的构造函数的 prototype 属性。class 作为构造函数的语法糖,同时有prototype 属性和__proto__ 属性,因此同时存两条继承链。

      1. 子类的 __proto__ 属性,表示构造函数的继承,总是指向父类

      2. 子类的 prototype 属性的 __proto__ 属性,表示方法的继承,总是指向父类的 prototype 属性

    上面的代码中,子类B的 __proto__ 属性 指向父类A,子类B的 prototype 属性的__proto__属性指向父类A的prototype属性

    总结:今天学习了 class extends 继承的原理,以及一些关于原型链的拓展。

  • 相关阅读:
    大臣的旅费 Apare_xzc 求树的直径 蓝桥杯
    连号区间数 Apare_xzc
    js盒模型
    js仿真进度条
    JS卷动事件
    json对象读取
    button属性及兼容性处理
    js图片跟随效果
    商城倒计时JS怎么做
    计算某天距离现在日期的差值
  • 原文地址:https://www.cnblogs.com/tim100/p/6102810.html
Copyright © 2020-2023  润新知