我是靠谱客的博主 激情裙子,这篇文章主要介绍es5和es6的继承有什么区别,现在分享给大家,希望可以做个参考。

本教程操作环境:windows10系统、ECMAScript 6.0版、Dell G3电脑。

es5和es6的继承有什么区别

ES5的继承实质上是先创建子类的实例对象,然后再将父类的方法添加到this上(Parent.apply(this)).

ES6的继承机制完全不同,实质上是先创建父类的实例对象this(所以必须先调用父类的super()方法),然后再用子类的构造函数修改this。

ES5的继承时通过原型或构造函数机制来实现。

ES6通过class关键字定义类,里面有构造方法,类之间通过extends关键字实现继承。子类必须在constructor方法中调用super方法,否则新建实例报错。因为子类没有自己的this对象,而是继承了父类的this对象,然后对其进行加工。如果不调用super方法,子类得不到this对象。

ES6中的继承

  在传统JS中,生成对象是通过创建构造函数,然后定义生成对象

复制代码
1
2
3
4
function parent(a,b){ this.a = a; this.b = b; }
登录后复制

然后通过prototype增加对应所需方法或属性

复制代码
1
2
3
4
parent.prototype.methods = function(){ return 'this is test methods'; } parent.prototype.attr = 'this is test attr‘;
登录后复制

而ES6中引入了类的概念,也就是class。通过关键词class去定义对象。

  class是个关键词,语言糖,这样能更清晰的读懂所创建的对象,

  通过属性constructor来接收控制方法传入的参数,如果不写这个属性,默认是没有参数的

复制代码
1
2
3
4
5
6
class parent{ curstructor(a,b){ this.a = a; this.b = b; } }
登录后复制

ES6中的继承是基于class类之间继承的。通过关键词extends实现。

  通过super实例化调用父类

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class parent{   constructor(a,b){     this.a = a;     this.b = b;   }   parentMethods(){     return this.a + this.b   } } class child extends parent{   constructor(a,b,c){     super(a,b);     this.c = c;   }   childMethods(){     return this.c + ',' + super.parentMethods()   } } const point = new child(1,2,3); alert(point.childMethods());
登录后复制

上面的代码,是一套简单的ES6父子类继承。

  相信已经看出来了,虽明显的区别就是在于ES6中,激活父组件的是super方法,而不是新建实例化,也就是说,父类的实例对象是先创建出来的,调用后,再去修改子类的构造函数中的this完善原型对象。

总结:

  ES5和ES6继承最大的区别就是在于:

    1.ES5先创建子类,在实例化父类并添加到子类this中

    2.ES6先创建父类,在实例化子集中通过调用super方法访问父级后,在通过修改this实现继承

【相关推荐:javascript视频教程、web前端】

以上就是es5和es6的继承有什么区别的详细内容,更多请关注靠谱客其它相关文章!

最后

以上就是激情裙子最近收集整理的关于es5和es6的继承有什么区别的全部内容,更多相关es5和es6内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(113)

评论列表共有 0 条评论

立即
投稿
返回
顶部