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实现查找/添加/删除/指定元素的class
Apr 12 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
Jun 30 Javascript
jquery动态改变div宽度和高度
Feb 09 Javascript
javascript实现的闭包简单实例
Jul 17 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
Nov 04 Javascript
jQuery插件Validate实现自定义校验结果样式
Jan 18 Javascript
Node.js中文件操作模块File System的详细介绍
Jan 05 Javascript
JavaScript数据结构之二叉树的删除算法示例
Apr 13 Javascript
vue 数组和对象不能直接赋值情况和解决方法(推荐)
Oct 25 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
Apr 01 Javascript
React父子组件间的传值的方法
Nov 13 Javascript
聊聊vue 中的v-on参数问题
Jan 29 Vue.js
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中Date获取时间不正确怎么办
2008/06/05 PHP
php简单分页类实现方法
2015/02/26 PHP
PHP基于GD库实现的生成图片缩略图函数示例
2017/07/05 PHP
JavaScript中的闭包原理分析
2010/03/08 Javascript
jquery animate实现鼠标放上去显示离开隐藏效果
2013/07/21 Javascript
基于jquery的simpleValidate简易验证插件
2014/01/31 Javascript
webpack中引用jquery的简单实现
2016/06/08 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
JS给Array添加是否包含字符串的简单方法
2016/10/29 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
在React项目中使用Eslint代码检查工具及常见问题
2018/10/10 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
Vue Element校验validate的实例
2020/09/21 Javascript
python根据经纬度计算距离示例
2014/02/16 Python
深入解析Python中函数的参数与作用域
2016/03/20 Python
python3.4用函数操作mysql5.7数据库
2017/06/23 Python
Python学习教程之常用的内置函数大全
2017/07/14 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
python使用Matplotlib画条形图
2020/03/25 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
2018/11/29 Python
numpy.random模块用法总结
2019/05/27 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
python下PyGame的下载与安装过程及遇到问题
2019/08/04 Python
django 自定义filter 判断if var in list的例子
2019/08/20 Python
python 解决flask uwsgi 获取不到全局变量的问题
2019/12/22 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
2020/06/10 Python
python中的split、rsplit、splitlines用法说明
2020/10/23 Python
基于html5 DeviceOrientation 实现微信摇一摇功能
2015/09/25 HTML / CSS
芬兰攀岩、山地运动和户外活动用品购物网站:Bergfreunde
2016/10/06 全球购物
银行员工职业规划范文
2014/01/21 职场文书
幼儿园运动会加油词
2014/02/14 职场文书
优质服务口号
2014/06/11 职场文书
个人批评与自我批评材料
2014/10/17 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
python 中的jieba分词库
2021/11/23 Python
Python学习之包与模块详解
2022/03/19 Python