我对原型链的学习理解笔记

用脑图画的一张指向说明图,后面会对图中的指向关系做一个说明,并且会通过代码进行校验。

分解说明

1、函数a有一个prototype指向a的原型对象,原型对象中会有一个constructor属性指向a函数本身。 2、通过new关键字对a函数进行实例化一个b对象,在b对象中会有一个__proto__属性指向实例化b对象的构造函数的prototype原型对象。然后prototype就能找到a函数。从而建立了一条b对象查找到a构造函数的路径,这个关系路径就是原型链。

代码校验

在下面的代码中,我们针对上图的关系指向,进行了打印,看输出结果来进行校验。

// 定义了一个函数a		
function a () {
	this.id = 1
}
// 打印a函数
console.log(a)
// 打印a函数的原型对象
console.log(a.prototype)
// 打印a函数的原型对象的constructor是否为a函数本身
console.log(a.prototype.constructor === a)

console.log('------------- 分割线 -------------')

// 对a函数实例化一个b对象
var b = new a ()
b.name = '张三'

// 打印b对象
console.log(b)
// 打印b对象的__proto__指向
console.log(b.__proto__)
// 打印b对象的__proto__ 是否为 a函数的原型对象
console.log(b.__proto__ === a.prototype)
复制代码

代码的运行结果

在上面的代码中已经使用原型链实现了一个继承,对象b中没有定义id属性,但是打印出来的结果中,可以看到b对象除了有自己的name属性之外还有一个id出现,那么这个id属性是怎么来的呢? 它就是通过上面我们说到的这个原型链指向关系然后在a构造函数中继承过来的。

转载请说明出处.谢谢!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值