继承&原型链

实现继承:原型链

原型链:实例对象和原型对象之间的关系,通过__proto__来联系

要理解原型链,首先要理解构造函数、原型、实例之间的关系

 

如果原型对象指向另一个实例

constructor1.prototype = instance2;

则全都指向新的原型对象(通过instance2间接指向)

 

如上图中,原先的原型对象(prototype1)指向新的实例(instance2)以后,之前的实例对象(instance1)能得到

原型对象2(prototype2)中的属性。

原型链搜索属性的顺序:(依次寻找,找到了就停止往下)

(1)instance1

(2)instance.__proto__(constructor.prototype)————>实际上就是instance2

(3)instance2.__proto__(constructor.prototype)

(4)一直查找到Object

帮助理解

1、原来的原型对象指向了另一个原型对象,则之前原型对象中的属性和方法全都失效了

2、实例对象的原型__proto__指向的是相应的构造函数所指向的原型

3、如果原型对象的指向改变,则实例对象的原型(__proto__)指向也同时发生改变

4、实例对象与原型对象的关系是通过实例中的__proto__原型联系起来的

实际运用:简单理解

假如说有两个对象Person,Student,要让Student继承Person的属性和方法

只要将Student的原型等于new 构造函数2(或者一个实例2)就好了

Student.peototype = new Person()   或者  instance2;

原型链的问题

问题一: 当原型链中包含引用类型值的原型时,该引用类型值会被所有实例共享

问题二: 在创建子实例时,子构造函数向超类型的构造函数中传递的参数固定,导致子实例所有的参数都一样

各种继承方法

原型链继承

借用构造函数继承

组合继承(常用)

原型式继承

寄生式继承

寄生组合式继承(最理想)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值