es6继承和es5继承的区别是什么
时间:2021-09-13
来源:互联网
标签:
今天PHP爱好者给大家带来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继承的区别是什么的详细内容,更多请关注php爱好者其它相关文章!
-
如何注册谷歌账号(谷歌账号注册方法) 怎么跳过手机验证 时间:2025-09-29
-
access数据库8个经典实例 时间:2025-09-29
-
mmc.exe是什么进程 mmc.exe应用程序错误的原因及解决方法 时间:2025-09-29
-
4种基本的编程命名规范介绍(匈牙利命名法、驼峰式命名法、帕斯卡命名法、下划线命名法) 时间:2025-09-29
-
Ghostscript下载、安装教程 Ghostscript命令参数详解 时间:2025-09-29
-
Linux中内存管理NUMA架构详解 时间:2025-09-29
今日更新
-
币安Gate.io交易所官网入口 安全交易主流数字货币指南
阅读:18
-
孙红雷是什么梗?揭秘极限挑战中颜王背后的爆笑名场面!
阅读:18
-
币安抹茶交易所APP下载指南 虚拟币交易平台大全
阅读:18
-
全球领先数字资产交易平台:币安LBank一键投资加密货币
阅读:18
-
孙伟是什么梗?揭秘网络热词孙伟的由来和爆火原因,看完秒懂!
阅读:18
-
币安WBF交易所导航:主流币交易投资一站式入口
阅读:18
-
孙悟空老乡是什么梗?揭秘美猴王与花果山的神秘渊源,原来大圣真身竟在这里!
阅读:18
-
币安现货交易平台:BTC/ETH等主流币一键买卖指南
阅读:18
-
币安杠杆交易所:高安全低手续费交易首选平台
阅读:18
-
孙笑川打奶奶是什么梗揭秘网络热梗背后真相及来源解析
阅读:18