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 相关文章推荐
javascript来定义类的规范小结
Nov 19 Javascript
JavaScript对象之间的转换 jQuery对象和原声DOM
Mar 07 Javascript
JQuery对checkbox操作 (循环获取)
May 20 Javascript
javascript 随机展示头像实现代码
Dec 06 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
Dec 28 Javascript
浅谈jQuery中的事件
Mar 23 Javascript
使用Raygun来自动追踪AngularJS中的异常
Jun 23 Javascript
JavaScript实现的简单Tab点击切换功能示例
Jul 06 Javascript
JavaScript实现横版菜单栏
Mar 17 Javascript
JavaScript仿京东秒杀倒计时
Mar 17 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
Jul 26 Javascript
微信小程序实现日历小功能
Nov 18 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 文本文件的读取效率
2012/02/10 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
2018/05/10 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
php 输出缓冲 Output Control用法实例详解
2020/03/03 PHP
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
10道典型的JavaScript面试题
2017/03/22 Javascript
Vue组件化通讯的实例代码
2017/06/23 Javascript
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
基于react组件之间的参数传递(详解)
2017/09/05 Javascript
Cocos2d实现刮刮卡效果
2018/12/20 Javascript
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
nuxt.js写项目时增加错误提示页面操作
2020/11/05 Javascript
Python实现大文件排序的方法
2015/07/10 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
python 字典操作提取key,value的方法
2019/06/26 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
python 实现IP子网计算
2021/02/18 Python
全球虚拟主机商:HostGator
2017/02/06 全球购物
采购员岗位职责
2013/11/15 职场文书
博士生求职信
2014/07/06 职场文书
尊老爱幼演讲稿
2014/09/04 职场文书
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书
医院岗前培训心得体会
2016/01/08 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书
PHP控制循环操作的时间
2021/04/01 PHP
NASA 机智号火星直升机拍到了毅力号设备碎片
2022/04/29 数码科技