一个class的问题

一个class的问题

老师您好,问一个class问题,是在阮一峰老师的书中提到的关于es6class和es5继承的表述:es5的继承实质是先创造子类的实例对象this,然后再将父类的方法添加到this上面。es6的继承机制完全不同,实质是先创造父类的实例对象this(所以必须先调用super方法),然后再用子类的构造函数修改this。   对于这段话我不是很理解,尤其是对es5的表述,老师能根据实例介绍一下吗?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕码 2019-05-23 20:49:31

同学你好!

代码中是写了继承的:Sub.prototype = new Super;将实例化的父类对象添加到子类的原型上。

这里new sub时候先创建sub中的this,然后将父类中的方法添加到sub中创建的this上,所以最后实例化出sub的对象es5就可以直接调用父类中的方法。

new的过程就是实例化的过程,是体现不到代码中去的,同学明白这个过程就可以。

同学在代码中实现继承就可以。这些比较基层的理念可以在之后的学习工作中慢慢理解体会领悟,不要着急哦~

如果帮助到了你 欢迎采纳 祝学习愉快~

  • 提问者 qq_那些荒废流年 #1
    老师,您这里的表述改为将父类中的属性添加到sub中创建的this上更合适把,es5继承的时候不是通过call(this)来实现实例属性的继承,通过原型链来实现方法的继承吗?
    2019-07-09 20:26:39
  • 同学这样说更加严谨,看来理解了,很棒,继续加油~
    2019-07-10 09:44:51
  • 感谢老师!
    2019-07-11 13:09:00
好帮手慕码 2019-05-23 13:46:35

同学你好!
ES5的继承机制简单来说就是:实质是先创造子类的实例对象this,然后再将父类的方法添加到this上面(Parent.apply(this))

通过子类的原型对象指向父类实例的方式来实现继承,那我们不难发现原型链的形成是真正是靠__proto_ 而非prototype,子类的实例可以访问父类原型上的方法,是因为子类实例通过 _proto与父类的原型对象有连接

代码可参考:

//先来个父类,带些属性
function Super(){
this.flag = true;
}
//为了提高复用性,方法绑定在父类原型属性上
Super.prototype.getFlag = function(){
return this.flag;
}
//来个子类
function Sub(){
this.subFlag = false;
}
//实现继承
Sub.prototype = new Super;
//给子类添加子类特有的方法,注意顺序要在继承之后
Sub.prototype.getSubFlag = function(){
return this.subFlag;
}
//构造实例
var es5 = new Sub;

同学可以试着理解一下~

如果帮助到了你 欢迎采纳 祝学习愉快~

  • 提问者 qq_那些荒废流年 #1
    老师您好,es5的整个继承机制我大概都了解,但是我就是跟文字对应不上。您说的实质是先创造子类的实例对象this 这句话对应代码中的哪里啊?继承不是重写子类原型对象吗?跟创造子类的实例对象有啥关系 创造子类的实例对象不是 new Sub()吗?这和继承也没关系呀。
    2019-05-23 14:51:55
  • 提问者 qq_那些荒废流年 #2
    老师 Parent.apply(this)只是实现了属性的继承把?父类的方法还是得通过原型链来实现继承啊
    2019-07-09 20:29:48
  • 提问者 qq_那些荒废流年 #1
    es5先创建了子类的实例对象这句话没看明白哦 不就是将子类型的原型对象重写来实现继承的吗 跟创建子类型的实例对象有啥关系 一直看不明白
    2019-05-23 11:29:34
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
热门框架Vue开发WebApp 18版
  • 参与学习           人
  • 提交作业       209    份
  • 解答问题       3299    个

本路径是通过ES6基础知识、运用Zepto、Swiper、fullPag等移动端常用工具包、以及当下流行框架Vue,结合多个实战案例,还原真实开发场景,最终实现手机端购物商城网页开发。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师