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 相关文章推荐
JavaScript 对象的属性和方法4种不同的类型
Mar 19 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
Dec 01 Javascript
JavaScript动态创建link标签到head里的方法
Dec 22 Javascript
基于jquery实现在线选座订座之影院篇
Aug 24 Javascript
字符串反转_JavaScript
Apr 28 Javascript
JavaScript中闭包的详解
Apr 01 Javascript
ES6中Symbol类型用法实例详解
Apr 06 Javascript
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
May 17 Javascript
vue渲染时闪烁{{}}的问题及解决方法
Mar 28 Javascript
vue项目部署上线遇到的问题及解决方法
Jun 10 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
Mar 14 Javascript
vue组件冲突之引用另一个组件出现组件不显示的问题
Apr 13 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
一个查看session内容的函数
2006/10/09 PHP
zend framework框架中url大小写问题解决方法
2014/08/19 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
2014/08/19 PHP
PHP生成plist数据的方法
2015/06/16 PHP
JavaScript与HTML结合的基本使用方法整理
2015/10/12 PHP
使用纯javascript实现放大镜效果
2015/03/18 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
Canvas放置反弹效果随机图形(实例)
2017/08/17 Javascript
JavaScript生成简单等差数列
2017/11/28 Javascript
详解webpack运行Babel教程
2018/06/13 Javascript
使用layui 渲染table数据表格的实例代码
2018/08/19 Javascript
vue-router源码之history类的浅析
2019/05/21 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
jQuery实现倒计时功能完整示例
2020/06/01 jQuery
vue中提示$index is not defined错误的解决方式
2020/09/02 Javascript
[04:03]DOTA2肉山黑名单梦之声 风暴之灵中文配音鉴赏
2013/07/03 DOTA
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
Python(PyS60)实现简单语音整点报时
2019/11/18 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
Python通过Pillow实现图片对比
2020/04/29 Python
Python logging模块写入中文出现乱码
2020/05/21 Python
美国购买新书和二手书网站:Better World Books
2018/10/31 全球购物
ASP.NET中的身份验证有那些
2012/07/13 面试题
.NET是怎么支持多种语言的
2015/02/24 面试题
中科创达面试题
2016/12/28 面试题
毕业生机械建模求职信
2013/10/14 职场文书
前台文员我鉴定
2014/01/12 职场文书
2014年最新学校运动会广播稿
2014/09/17 职场文书
学校政风行风整改方案
2014/10/25 职场文书
黄河绝恋观后感
2015/06/08 职场文书
教你使用VS Code的MySQL扩展管理数据库的方法
2022/01/22 MySQL