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中escape对应的C#解码函数 UrlDecode
Dec 16 Javascript
什么是cookie?js手动创建和存储cookie
May 27 Javascript
jQuery旋转木马式幻灯片轮播特效
Dec 04 Javascript
JS实现的适合做faq或menu滑动效果示例
Nov 17 Javascript
JS如何设置iOS中微信浏览器的title
Nov 22 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
Jan 22 Javascript
js+html制作简单日历的方法
Jun 27 Javascript
AngularJS实现单一页面内设置跳转路由的方法
Jun 28 Javascript
微信小程序实现获取小程序码和二维码java接口开发
Mar 29 Javascript
如何解决vue在ios微信"复制链接"功能问题
Mar 26 Javascript
微信小程序实现手指拖动选项排序
Apr 22 Javascript
vue-simple-uploader上传成功之后的response获取代码
Sep 07 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更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
浏览器无法运行JAVA脚本的解决方法
2008/01/09 Javascript
JavaScript 高级语法介绍
2009/06/15 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
JS判断变量是否为空判断是否null
2014/07/25 Javascript
微信小程序  audio音频播放详解及实例
2016/11/02 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
ES6中Iterator与for..of..遍历用法分析
2017/03/31 Javascript
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
js实现省市级联效果分享
2017/08/10 Javascript
node.js 核心http模块,起一个服务器,返回一个页面的实例
2017/09/11 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
layer弹出层父子页面事件相互调用方法
2018/08/17 Javascript
解决angularJS中input标签的ng-change事件无效问题
2018/09/13 Javascript
详解vue-router导航守卫
2019/01/19 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
在vue中使用echarts(折线图的demo,markline用法)
2020/07/20 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
Python实现文件复制删除
2016/04/19 Python
Python在线运行代码助手
2016/07/15 Python
Python中扩展包的安装方法详解
2017/06/14 Python
Django继承自带user表并重写的例子
2019/11/18 Python
Python 存取npy格式数据实例
2020/07/01 Python
python+opencv实现车道线检测
2021/02/19 Python
我未来的职业规划范文
2014/01/11 职场文书
工艺工程师岗位职责
2014/03/04 职场文书
安全教育月活动总结
2014/05/05 职场文书
工商局副局长个人对照检查材料
2014/09/25 职场文书
民事二审代理词
2015/05/25 职场文书
AJAX学习笔记
2021/05/18 Javascript
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis