博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我对原型链的学习理解笔记
阅读量:6196 次
发布时间:2019-06-21

本文共 830 字,大约阅读时间需要 2 分钟。

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

分解说明

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构造函数中继承过来的。

转载请说明出处.谢谢!

你可能感兴趣的文章
HttpClient忽略ssl验证
查看>>
phonegap ios contact(获取手机号)
查看>>
python数据库sqlite基础(二)------------------数据库的修改和删除
查看>>
【工具使用系列】关于 MATLAB 交流伺服运动控制,你需要知道的事
查看>>
每个程序员应该阅读的10本经典书籍
查看>>
Spring Security解读
查看>>
Stream文件上传插件正式发布1.9
查看>>
Android ormlite 多对多关联映射笔记
查看>>
Spring(六):配置SqlSessionFactory,整合Mybatis
查看>>
geth客户端安装启动加速同步
查看>>
如何利用Guava实现方法调用超时自动中断
查看>>
FastCGI规范
查看>>
配置java环境变量
查看>>
java基础知识篇
查看>>
yum安装ffmpeg
查看>>
Activity启动模式-任务栈
查看>>
Android 轻松实现语音识别
查看>>
jQuery操作input改变value属性值
查看>>
PHP实现的多文件上传类及用法示例
查看>>
小知识之Eclipse代码补全
查看>>