zoukankan      html  css  js  c++  java
  • ES5和ES6中的继承 图解

    Javascript中的继承一直是个比较麻烦的问题,prototype、constructor、__proto__在构造函数,实例和原型之间有的 复杂的关系,不仔细捋下很难记得牢固。ES6中又新增了class和extends,和ES5搅在一起,加上平时很少自己写继承,简直乱成一锅粥。不过还 好,画个图一下就清晰了,下面不说话了,直接上图,上代码。

    ES5

    ES5中的继承,看图:

     1 function Super() {}
     2  
     3 function Sub() {}
     4 Sub.prototype = new Super();
     5 Sub.prototype.constructor = Sub;
     6  
     7 var sub = new Sub();
     8  
     9 Sub.prototype.constructor === Sub; // ② true
    10 sub.constructor === Sub; // ④ true
    11 sub.__proto__ === Sub.prototype; // ⑤ true
    12 Sub.prototype.__proto__ == Super.prototype; // ⑦ true

    ES5中这种最简单的继承,实质上就是将子类的原型设置为父类的实例。

    ES6

    ES6中的继承,看图:

     1 class Super {}
     2  
     3 class Sub extends Super {}
     4  
     5 var sub = new Sub();
     6  
     7 Sub.prototype.constructor === Sub; // ② true
     8 sub.constructor === Sub; // ④ true
     9 sub.__proto__ === Sub.prototype; // ⑤ true
    10 Sub.__proto__ === Super; // ⑥ true
    11 Sub.prototype.__proto__ === Super.prototype; // ⑦ true

    所以

    ES6和ES5的继承是一模一样的,只是多了classextends ,ES6的子类和父类,子类原型和父类原型,通过__proto__ 连接。

  • 相关阅读:
    安装IIS的郁闷之旅
    设置WPF窗口相对于非WPF窗口的位置
    钓鱼记
    java拾遗
    人间四月芳菲尽
    [linux] x server can not start under VMWare
    如果没有开源软件没有免费软件,这个世界会怎么样?评[盖茨北大演讲遭遇开源人士抗议]
    程序员的面包
    2007中国软件英雄会-七年的等待
    sysbench安装
  • 原文地址:https://www.cnblogs.com/wshiqtb/p/5603985.html
Copyright © 2011-2022 走看看