在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
继承方式ES5 prototype 继承通过原型链(构造函数 + [[prototype]])指向实现继承。 (备注:后续__proto__我都会写成[[prototype]]这种形式) // 父类:function SuperType;子类:function SubType; SubType.prototype = new SuperType(); // SubType 继承 SuperType // 根据上一节原型链讲到的知识点:实例化对象的__proto__等于构造函数的prototype SubType.prototype.__proto__ === SuperType.prototype // true 上边的继承关系如下图: 内部实现机制上,ES5 的继承,实质是先创造子类的实例对象this上,然后再将父类的方法添加到这个this上。类似使用:Father.apply(this) ES6 class 继承通过class的extends + super实现继承。 super用法 super 可以作为函数和对象使用的。 二者区别答:不是完全一样的,主要有以下几个差异点:
ES5 prototype 继承 内部实现方式ES5的继承,实质上是先创造子类的实例对象this,然后再将父类的方法添加到子类(this)上面---Father.apply(this)。 ES6 class 继承内部实现方式ES6的继承机制完全不同,实质上是先创造父类的实例对象this,并将父类的属性和方法放到this上(前提是通过super函数调用),然后再用子类的构造函数修改this。 因为实现机制不同,导致这两种继承在继承原生构造函数时有些差异: es5的写法不能继承原生构造函数(比如Array、Number等) 扩展关于内部实现机制的说明,可以参考《阮一峰的es6文档-class的继承》相关部分 到此这篇关于java中ES6继承和ES5继承之间的差别的文章就介绍到这了,更多相关ES6继承和ES5继承的差别内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论