Javascript(五十三)面向对象的多态和继承

面向对象,继承、封装、多态。

面向对象是一个编程思想,支撑面向对象编程思想的语法是类(ES6之前没有这个概念)和对象。构造函数充当类的角色。构造函数和对象实现面向对象程序的时候,体现封装,继承,多态的特点。

封装:封构造函数

继承

继承:分类更加细分的构造函数

1.继承父一级的所有属性(改变父级构造函数的this指向)

在这里插入图片描述
Teddy无法直接继承Dog的原型对象,也就无法调用Dog的方法。因为本身不是通过new创建的Teddy,Teddy的也就无法直接共享到父一级上的方法。

2.继承父一级的原型对象(方法)

方法一:

对象拷贝:

地址拷贝:
在这里插入图片描述
值拷贝:
在这里插入图片描述
如果我们的原型继承使用了地址拷贝,那么如果父级修改了原型对象,子级也会跟着修改。要么就是子级修改了原型对象父级也会修改。这就影响到其他的子级使用父一级的原型。
在这里插入图片描述

原型链继承

如果使用值拷贝,那么子级和父级即使发生变化也不会相互影响。也称为原型链继承
在这里插入图片描述
方法二:ES6 Object.create() 原型链

原理:将子级的原型对象指向父级的原型对象,这个也是值拷贝。
在这里插入图片描述
方法三:子级.prototype=new 父级()

将子级的原型对象作为父级的实体,子级创建自己的属性是不会干扰到父级的。
在这里插入图片描述

多态:

使用原型链的继承之后,子级继承的构造函数方法进行更改只会在子一级生效,父级的构造函数方法还是一样的。
在这里插入图片描述
继承和多态同一件事情两种完全不同的侧重。

继承:侧重是从父一级构造函数,集成到的属性和方法(同样)

多态:侧重是子一级子级重写和新增的属性和方法。

(不一样)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值