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 相关文章推荐
JQuery的Ajax请求实现局部刷新的简单实例
Feb 11 Javascript
jquery.ajax之beforeSend方法使用介绍
Dec 08 Javascript
JQuery中DOM事件绑定用法详解
Jun 13 Javascript
jQuery删除当前节点元素
Dec 07 Javascript
微信小程序 122100版本更新问题解决方案
Dec 22 Javascript
AngularJS Controller作用域
Jan 09 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
Oct 12 Javascript
three.js中3D视野的缩放实现代码
Nov 16 Javascript
纯js实现隔行变色效果
Nov 29 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
Feb 22 Javascript
vue路由对不同界面进行传参及跳转的总结
Apr 20 Javascript
vue2 拖动排序 vuedraggable组件的实现
Aug 08 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和ACCESS写聊天室(九)
2006/10/09 PHP
php unset全局变量运用问题的深入解析
2013/06/17 PHP
PHP 导出Excel示例分享
2014/08/18 PHP
php中getservbyport与getservbyname函数用法实例
2014/11/18 PHP
php定义一个参数带有默认值的函数实例分析
2015/03/16 PHP
分享PHP守护进程类
2015/12/30 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
Javascript学习笔记6 prototype的提出
2010/01/11 Javascript
JavaScript 注册事件代码
2011/01/27 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
2013/08/05 Javascript
javascript 按键事件(兼容各浏览器)
2013/12/20 Javascript
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
浅谈Redux中间件的实践
2018/07/27 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
微信小程序自定义多列选择器使用详解
2019/06/21 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
JavaScript面试中常考的字符串操作方法大全(包含ES6)
2020/05/10 Javascript
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
寻找网站后台地址的python脚本
2014/09/01 Python
pygame加载中文名mp3文件出现error
2017/03/31 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
python 在屏幕上逐字显示一行字的实例
2018/12/24 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
2019/11/11 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
2020/12/04 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
GAP美国官网:美国休闲时尚品牌
2016/08/26 全球购物
施华洛世奇西班牙官网:SWAROVSKI西班牙
2019/06/06 全球购物
英文版销售经理个人求职信
2013/11/20 职场文书
数控技术专科生自我评价
2014/01/08 职场文书
优秀团员事迹材料2000字
2014/08/20 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
工作简报格式范文
2015/07/21 职场文书