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 滚轮事件使用说明
Mar 07 Javascript
jquery二级导航内容均分的原理及实现
Aug 13 Javascript
node.js中watch机制详解
Nov 17 Javascript
javascript实现label标签跳出循环操作
Mar 06 Javascript
jQuery实现的tab标签切换效果示例
Sep 05 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
Nov 22 Javascript
vuex 的简单使用
Mar 22 Javascript
vue中如何实现pdf文件预览的方法
Jul 12 Javascript
Vue开发之watch监听数组、对象、变量操作分析
Apr 25 Javascript
JS数组扁平化、去重、排序操作实例详解
Feb 24 Javascript
微信小程序自定义弹出层效果
May 26 Javascript
vue实现下拉菜单树
Oct 22 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生成静态页面详解
2006/12/05 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
JavaScript中prototype为对象添加属性的误区介绍
2013/10/15 Javascript
用C/C++来实现 Node.js 的模块(一)
2014/09/24 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
2015/06/05 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
Bootstrap按钮下拉菜单组件详解
2016/05/10 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
HTML中使背景图片自适应浏览器大小实例详解
2017/04/06 Javascript
jQuery实现所有验证通过方可提交的表单验证
2017/11/21 jQuery
vue组件中的数据传递方法
2018/05/14 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
详解vue-property-decorator使用手册
2019/07/29 Javascript
JSX在render函数中的应用详解
2019/09/04 Javascript
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
跟老齐学Python之变量和参数
2014/10/10 Python
Python selenium抓取微博内容的示例代码
2018/05/17 Python
python中的tcp示例详解
2018/12/09 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
详解python中*号的用法
2019/10/21 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
2020/02/07 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
一套带网友答案的.NET笔试题
2016/12/06 面试题
UNIX特点都有哪些
2016/04/05 面试题
网站编辑求职信
2013/10/17 职场文书
市场营销专业个人求职信范文
2013/12/14 职场文书
销售人员获奖感言
2014/02/05 职场文书
英语教师岗位职责
2014/03/16 职场文书
法人委托书
2014/07/31 职场文书
三峡导游词
2015/01/31 职场文书