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 相关文章推荐
IE6与IE7中,innerHTML获取param的区别
Mar 15 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
Mar 18 Javascript
简单常用的幻灯片播放实现代码
Sep 25 Javascript
javascript使用正则表达式实现去掉空格之后的字符
Feb 15 Javascript
深入理解JavaScript系列(27):设计模式之建造者模式详解
Mar 03 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
Jul 27 Javascript
JavaScript实现身份证验证代码
Feb 17 Javascript
Vue.js组件使用开发实例教程
Nov 01 Javascript
jQuery鼠标移动图片上实现放大效果
Jun 25 jQuery
基于Bootstrap分页的实例讲解(必看篇)
Jul 04 Javascript
基于JavaScript中字符串的match与replace方法(详解)
Dec 04 Javascript
vuex提交state&&实时监听state数据的改变方法
Sep 16 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 cout<<的一点看法
2010/01/24 PHP
php calender(日历)二个版本代码示例(解决2038问题)
2013/12/24 PHP
php Calender(日历)代码分享
2014/01/03 PHP
微信自定义菜单的处理开发示例
2015/04/16 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
javascript 必知必会之closure
2009/09/21 Javascript
js 获取Listbox选择的值的代码
2010/04/15 Javascript
jquery $.trim()方法使用介绍
2014/05/21 Javascript
jQuery获取table行数并输出单元格内容的实现方法
2016/06/30 Javascript
JavaScript实现QQ列表展开收缩扩展功能
2017/10/30 Javascript
IntelliJ IDEA 安装vue开发插件的方法
2017/11/21 Javascript
解决axios发送post请求返回400状态码的问题
2018/08/11 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
详解K-means算法在Python中的实现
2017/12/05 Python
数据清洗--DataFrame中的空值处理方法
2018/07/03 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
Python完成哈夫曼树编码过程及原理详解
2019/07/29 Python
python二分法查找算法实现方法【递归与非递归】
2019/12/06 Python
Python基于pygame实现单机版五子棋对战
2019/12/26 Python
Python 日期的转换及计算的具体使用详解
2020/01/16 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
canvas学习总结三之绘制路径-线段
2019/01/31 HTML / CSS
HTML5跳转小程序wx-open-launch-weapp的示例代码
2020/07/16 HTML / CSS
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
澳大利亚优惠网站:Deals.com.au
2019/07/02 全球购物
英国最大最好的无人机商店:Drones Direct
2019/07/12 全球购物
希特勒经典演讲稿
2014/05/19 职场文书
新农村建设典型材料
2014/05/31 职场文书
行政人事专员岗位职责
2015/04/07 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js
JavaScript实现外溢动态爱心的效果的示例代码
2022/03/21 Javascript
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python