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是否可以跨文件同时控制多个iframe页面的应用技巧
Dec 16 Javascript
javascript实现日历控件(年月日关闭按钮)
Dec 12 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
Dec 27 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
Oct 09 Javascript
使用javascript实现监控视频播放并打印日志
Jan 05 Javascript
jQuery前端分页示例分享
Feb 10 Javascript
JavaScript 事件绑定及深入
Apr 13 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
Feb 24 Javascript
小程序数据通信方法大全(推荐)
Apr 15 Javascript
Nuxt使用Vuex的方法示例
Sep 06 Javascript
Vue自动构建发布脚本的方法示例
Jul 24 Javascript
Nest.js散列与加密实例详解
Feb 24 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自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
javascript flash下fromCharCode和charCodeAt方法使用说明
2008/01/12 Javascript
JavaScript Event学习第四章 传统的事件注册模型
2010/02/07 Javascript
js拦截alert对话框另类应用
2013/01/16 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
移动设备web开发首选框架:zeptojs介绍
2015/01/29 Javascript
js中日期的加减法
2015/05/06 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
2016/07/27 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
jQuery正则验证注册页面经典实例
2017/06/10 jQuery
nodejs检测因特网是否断开的解决方案
2019/04/17 NodeJs
Js代码中的span拼接问题解决
2019/11/22 Javascript
vue+elementUI组件table实现前端分页功能
2020/11/15 Javascript
vue实现拖拽效果
2019/12/23 Javascript
Python中的作用域规则详解
2015/01/30 Python
python进行两个表格对比的方法
2018/06/27 Python
python中datetime模块中strftime/strptime函数的使用
2018/07/03 Python
python求最大连续子数组的和
2018/07/07 Python
python整小时 整天时间戳获取算法示例
2019/02/20 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
python实现电子词典
2020/03/03 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
pycharm使用技巧之自动调整代码格式总结
2020/11/04 Python
关于HTML5你必须知道的28个新特性,新技巧以及新技术
2012/05/28 HTML / CSS
小女主人连衣裙:Little Mistress
2017/07/10 全球购物
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
网络工程与软件技术毕业生自荐信
2013/09/24 职场文书
文明宿舍获奖感言
2014/02/07 职场文书
学员自我鉴定
2014/03/19 职场文书
企业精神口号
2014/06/11 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
写好Python代码的几条重要技巧
2021/05/21 Python
零基础学java之循环语句的使用
2022/04/10 Java/Android
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers