深入解析JavaScript 原型继承

作者 : 开心源码 本文共2578个字,预计阅读时间需要7分钟 发布时间: 2022-05-12 共78人阅读

JavaScript 原型继承,学习js面向对象的朋友可以看看。十分的全面细致,具备肯定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。

Object.prototype
JavaScript是基于原型继承的,任何对象都有一个prototype属性。Object.prototype是所有对象的根,并且不可改变。

Object.prototype=null; alert(Object.prototype);//[object Object] 

Object与Object.prototype
Object继承于Object.prototype,添加一个属性给Object.prototype上,同时也会反应到Object上。如:

Object.prototype.nameStr="Object Prototype"; Object.prototype.getName=function(){return this.nameStr}; alert(Object.getName());//Object Prototype 

Function.prototype与Object.prototype
因为Object.prototype是万物之根,所以Function.prototype也同时会继承Object.prototype的所有属性。如:

Object.prototype.nameStr="Object Prototype"; Object.prototype.getName=function(){return this.nameStr}; alert(Function.prototype.getName());//Object Prototype 

Object/Function/String/Number/Boolean/Array与Date

Object/Function/String/Number/Boolean/Array与Date都是函数,函数又继承于Function.prototype, 所以更改Function.prototype一样会影响到Object/Function/String/Number/Boolean/Array与Date。如:

Function.prototype.initType='Function Type'; Function.prototype.getType=function(){return this.initType}; //alert(Object.getType());//Function Type //alert(Date.getType());//Function Type //alert(Number.getType());//Function Type //alert(String.getType());//Function Type //alert(Boolean.getType());//Function Type alert(Array.getType());//Function Type 

同样Function.prototype也会把所受Object.prototype的影响,传递给它的下一层级。如:

Object.prototype.nameStr="Object Prototype"; Object.prototype.getName=function(){return this.nameStr}; alert(Function.prototype.getName());//Object Prototype alert(Array.getName());//Object Prototype //欢迎加入前台全栈开发交流圈一起学习交流:864305860alert(Boolean.prototype.getName());//Object Prototype //欢迎加入前台全栈开发交流圈一起学习交流:864305860Array/Array.prototype与Function.prototype/Object.prototype 

Array是函数对象,受Function.prototype的影响,而Array.prototype不是函数对象,所不受Function.prototype的影响,但所有对象受Object.prototype的影响,所以Array.prototype也会受Object.prototype的影响。如:

Object.prototype.nameStr="Object Prototype"; Object.prototype.getName=function(){return this.nameStr}; //alert(Function.prototype.getName());//Object Prototype //alert(Boolean.prototype.getName());//Object Prototype Function.prototype.initFun=function(){ return 'Function.prototype.initFun'; } //欢迎加入前台全栈开发交流圈一起学习交流:864305860alert(Array.initFun());//Function.prototype.initFun var arr=['a','b']; alert(arr.getName());//Object Prototype alert(arr.initFun());//Error: arr.initFun is not a function alert(arr.initFun);//undefined//欢迎加入前台全栈开发交流圈一起学习交流:864305860

结语

感谢您的观看,如有不足之处,欢迎批评指正。

本次给大家推荐一个免费的学习群,里面概括移动应用网站开发,css,html,webpack,vue node angular以及面试资源等。
对web开发技术感兴趣的同学,欢迎加入Q群:864305860,不论你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天升级视频资料。
最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 深入解析JavaScript 原型继承

发表回复