千家信息网

es6继承和es5继承有什么区别

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章给大家分享的是有关es6继承和es5继承有什么区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。es5和es6继承的区别: ES5的继承是通过原型或构造函数机制实现
千家信息网最后更新 2026年10月31日es6继承和es5继承有什么区别

这篇文章给大家分享的是有关es6继承和es5继承有什么区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

es5和es6继承的区别: ES5的继承是通过原型或构造函数机制实现的;它先创建子类,再实例化父类并添加到子类this中。 ES6先创建父类,再实例化子集中通过调用super方法访问父级后,再通过修改this实现继承。

本教程操作环境:windows7系统、ECMAScript 5&&ECMAScript 6版、Dell G3电脑。

es6继承和es5继承的区别

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

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

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

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

注意super关键字指代父类的实例,即父类的this对象。

注意:在子类构造函数中,调用super后,才可使用this关键字,否则报错。

1、在es5中的继承:

      function parent(a,b){            this a = a;            this b = b;        }        function child(c){            this c = c        };

通过子集去继承父级:

parent.call(child,1,2)

而去看call的底层方法可知,继承的过程是通过prototype属性

child.prototype = new parent(1,2);

由此可知,ES5继承的实质是先创建了子类元素child的的实例对象,然后再把父类元素parent的原型对象中的属性赋值给子类元素child的实例对象里面,从而实现继承

2、ES6中的继承

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

function parent(a,b){    this.a = a;    this.b = b;}

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

parent.prototype.methods = function(){    return 'this is test methods';}parent.prototype.attr = 'this is test attr';

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

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

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

class parent{    curstructor(a,b){        this.a = a;        this.b = b;    }}

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

通过super实例化调用父类

   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继承最大的区别就是在于:

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

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

感谢各位的阅读!关于"es6继承和es5继承有什么区别"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

对象 子类 实例 方法 关键 函数 属性 关键字 原型 元素 关键词 实质 机制 之间 也就是 内容 化子 参数 就是 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网 互联网科技公司经营范围 互联网科技工作委员会主任 平安科技 互联网 互联网科技美容 华脉科技工业互联网产品 银川新华互联网科技学校地址 科技与互联网的利与弊 昭通互联网科技选哪家 知域互联网科技有限公司大骗子 高科技互联网发展前景如何 锡山区互联网智能科技产品供应 北京市互联网新科技 郑州欣桑互联网科技有限公司 广西科技产业互联网是什么 张家口科技产业互联网平台 福仕德教育科技互联网 北京天晋互联网科技有限公司 六子台科技互联网展会 山东亿川互联网科技有限责任公司 上海挚品互联网科技有限公司 互联网金融 科技 金融科技与互联网金融 互联网金融 金融科技 互联网科技缩写 镁科技互联网资讯平台 山东吉时兔互联网科技有限公司 苏州五指互联网络科技有限 广东工业互联网大赛深圳学泰科技 杭州披云加互联网科技有限公司
0