JavaScript 原型链学习总结


Posted in Javascript onOctober 29, 2010

Function和Object都是函数的实例

Function的父原型指向到Function的原型,Function的原型的父原型是Object的原型。
Object的父原型也指向到Function的原型。
一个实例的对像,它的默认的父原型为其构造函数的显示原型
[每个对像都有一个隐慝的属性用于指向到它的父对像(构造对像的函数)的原型(这里称为父原型或隐式原型)。因为原型也是对像,所以原型也有父原型,Object的原型是所有父原型的顶层(原型根),这样就形成了所谓原型链]

对像属性访问原则

当从一个对像那里读取属性时,如果对像自身属性列表中不存在这样的属性,就会去自己关联的父原型对像那里寻找,如果父原型对像属性列表中也没有这样的属性则会这个父原型的父原型那里查找,直到找到或直到对顶层原型[Object.prototype]对像属性列表的查找完毕
调用对象的方法跟访问属性搜索过程一样,因为方法的函数对象就是对象的一个属性值。
实例:

Object.prototype.m1 = function(){ 
alert("我是狮子"); 
} 
function Class1(str){ 
this.p1 = str; 
} 
function Class2(){} 
Class2.prototype.m1 = function(){ 
alert("你好"); 
} 
var n1 = new Class1("毛狮子"); 
//@__proto__属性是对像父原型的引用 
//@Object.prototype.__proto__=null 
/* 
n1的原型链 
n1.__proto__=Class1.prototype 
Class1.prototype.__proto__=Object.prototype */ 
var n2 = new Class2(); 
/* 
n2的原型链 
n2.__proto__=Class2.prototype 
Class2.prototype.__proto__=Object.prototype 
*/ 
n1.m1();//===Object.prototype.m1(); 
n2.m1();//===Class2.prototype.m1(); 
alert(n1.p1);//毛狮子 
alert(n2.p1);//undefined

Javascript 相关文章推荐
setTimeout 不断吐食CPU的问题分析
Apr 01 Javascript
Jquery+JSon 无刷新分页实现代码
Apr 01 Javascript
关于递归运算的顺序测试代码
Nov 30 Javascript
easyui datagrid 键盘上下控制选中行示例
Mar 31 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
Nov 21 Javascript
简单几步实现返回顶部效果
Dec 05 Javascript
Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
Mar 13 Javascript
bootstrap table动态加载数据示例代码
Mar 25 Javascript
基于JavaScript实现类名的添加与移除
Apr 23 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
Dec 10 Javascript
使用layui 渲染table数据表格的实例代码
Aug 19 Javascript
js 实现验证码输入框示例详解
Sep 23 Javascript
JavaScript 原型学习总结
Oct 29 #Javascript
用JQuery调用Session的实现代码
Oct 29 #Javascript
基于jquery 的一个progressbar widge
Oct 29 #Javascript
JQuery开发的数独游戏代码
Oct 29 #Javascript
Web前端设计模式  制作漂亮的弹出层
Oct 29 #Javascript
10个基于Jquery的幻灯片插件教程
Oct 29 #Javascript
jQuery.ajax 用户登录验证代码
Oct 29 #Javascript
You might like
基于CI框架的微信网页授权库示例
2016/11/25 PHP
判断页面是关闭还是刷新的js代码
2007/01/28 Javascript
javascript下function声明一些小结
2007/12/28 Javascript
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
namespace.js Javascript的命名空间库
2011/10/11 Javascript
javascript实现日历控件(年月日关闭按钮)
2012/12/12 Javascript
基于datagrid框架的查询
2013/04/08 Javascript
js判断undefined类型示例代码
2014/02/10 Javascript
jQuery分别获取选中的复选框值的示例
2014/06/17 Javascript
基于javascript实现全屏漂浮广告
2016/03/31 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
JS判断用户用的哪个浏览器实例详解
2018/10/09 Javascript
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
详解element上传组件before-remove钩子问题解决
2020/04/08 Javascript
将Vue组件库更换为按需加载的方法步骤
2020/05/06 Javascript
详解Python中with语句的用法
2015/04/15 Python
Python中list初始化方法示例
2016/09/18 Python
Python正则简单实例分析
2017/03/21 Python
pymongo中group by的操作方法教程
2019/03/22 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
python中dict()的高级用法实现
2019/11/13 Python
Python Gluon参数和模块命名操作教程
2019/12/18 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
scrapy处理python爬虫调度详解
2020/11/23 Python
Python操作Excel的学习笔记
2021/02/18 Python
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
测量实习生自我鉴定
2013/09/19 职场文书
《中彩那天》教学反思
2014/02/22 职场文书
个人委托书范本汇总
2014/10/01 职场文书
罚站检讨书
2015/01/29 职场文书
考察邀请函范文
2015/01/31 职场文书
九寨沟导游词
2015/02/02 职场文书
初级职称评定工作总结
2015/08/13 职场文书
2016年寒假见闻
2015/10/10 职场文书
商业计划书之服装
2019/09/09 职场文书