JavaScript 原型继承


Posted in Javascript onDecember 26, 2011

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

alert(Boolean.prototype.getName());//Object Prototype Array/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'; 
} 
alert(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
Javascript 相关文章推荐
下拉菜单点击实现连接跳转功能的js代码
May 19 Javascript
让js弹出窗口居前显示的实现方法
Jul 10 Javascript
Knockout visible绑定使用方法
Nov 15 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
Jun 09 Javascript
js实现跨域的方法实例详解
Jun 24 Javascript
DeviceOne 让你一见钟情的App快速开发平台
Feb 17 Javascript
JS实现最简单的冒泡排序算法
Feb 15 Javascript
Bootstrap缩略图的创建方法
Mar 22 Javascript
Vue非父子组件通信详解
Jun 12 Javascript
JS实现简单的抽奖转盘效果示例
Feb 16 Javascript
Vue利用Blob下载原生二进制数组文件
Sep 25 Javascript
react-intl实现React国际化多语言的方法
Sep 27 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件。
Dec 26 #Javascript
查看源码的工具 学习jQuery源码不错的工具
Dec 26 #Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
Dec 26 #Javascript
非常有用的40款jQuery 插件推荐(系列二)
Dec 25 #Javascript
JS代码优化技巧之通俗版(减少js体积)
Dec 23 #Javascript
关于跨站脚本攻击问题
Dec 22 #Javascript
js DOM的学习笔记
Dec 22 #Javascript
You might like
php Rename 更改文件、文件夹名称
2011/05/24 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
2012/01/27 PHP
一波PHP中cURL库的常见用法代码示例
2016/05/06 PHP
解决laravel id非自增 模型取回为0 的问题
2019/10/11 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
JavaScript 函数式编程的原理
2009/10/16 Javascript
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
2010/10/20 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
Javascript调用函数方法的几种方式介绍
2015/03/20 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
jQuery解析XML 详解及方法总结
2016/09/28 Javascript
基于AngularJS前端云组件最佳实践
2016/10/20 Javascript
Vue render深入开发讲解
2018/04/13 Javascript
mpvue跳转页面及注意事项
2018/08/03 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
微信小程序实现多选删除列表数据功能示例
2019/01/15 Javascript
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
Python网络编程之TCP与UDP协议套接字用法示例
2018/02/02 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
python 实现简单的FTP程序
2019/12/27 Python
给Python学习者的文件读写指南(含基础与进阶)
2020/01/29 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
终于搞懂了Keras中multiloss的对应关系介绍
2020/06/22 Python
解决python中0x80072ee2错误的方法
2020/07/19 Python
linux面试题参考答案(9)
2015/01/07 面试题
护士演讲稿范文
2014/01/05 职场文书
秘书英文求职信范文
2014/01/31 职场文书
感恩之星事迹材料
2014/05/03 职场文书
十佳文明家庭事迹
2014/05/25 职场文书
爱牙日活动总结
2014/08/29 职场文书
医学会议开幕词
2016/03/03 职场文书
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
2021/08/30 Python
Java实战之课程信息管理系统的实现
2022/04/01 Java/Android
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL
详解ZABBIX监控ESXI主机的问题
2022/06/21 Servers