5-3面向对象之继承

*1.继承
*2.原型链

1.继承

  • 接口继承 (java等)
  • 实现继承
    js由于没有函数签名无法实现接口继承,只支持实现继承,而且其实现继承主要依靠原型链实现。

2.原型链

回顾原型对象、构造函数、实例的关系: 每个实例都有一个原型(prototype)指向原型对象的指针,而原型对象的属性构造函数也是一个指针,此指针指向原型(prototype)所在的函数。
// 被继承:SuperType
function SuperType () {
  this.property = true
}
// SuperType的原型对象
SuperType.prototype.getSuperValue = function () {
  return this.property
}
// 想继承:SubType
function SubType () {
  this.subproperty = false
}
// 继承了SuperType
SubType.prototype = new SuperType ()
//验证
var instance = new SubType()
console.log(instance.getSuperValue())  //true
console.log(instance.toString())  //[object Object]

继承的实现思想:
一、让SubType的原型对象(SubType prototpye)指向SuperType的实例
二、而SuperType的实例有一个prototype属性指向其原型对象(SuperType prototype)
三、所以SubType prototype => SuperType prototype
在这里插入图片描述
图片是重点,从下往上看会收获良多

确定原型与实例关系

  • instanceof 操作符
  • isPrototypeOf()方法
console.log(instance instanceof Object)  // true
console.log(instance instanceof SuperType) // true
console.log(instance instanceof SubType) // true
console.log(Object.prototype.isPrototypeOf(instance))  // true
console.log(SuperType.prototype.isPrototypeOf(instance)) // true
console.log(SubType.prototype.isPrototypeOf(instance)) // true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值