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 相关文章推荐
地址栏传递中文参数乱码在js里用escape转码
Aug 28 Javascript
jquery向上向下取整适合分页查询
Sep 06 Javascript
node.js中的fs.mkdirSync方法使用说明
Dec 17 Javascript
javascript和jquery实现设置和移除文本框默认值效果代码
Jan 13 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
Jan 13 Javascript
Vue.js 2.0 和 React、Augular等其他前端框架大比拼
Oct 08 Javascript
js数组与字符串常用方法总结
Jan 13 Javascript
Vue计算属性的使用
Aug 04 Javascript
VUE element-ui 写个复用Table组件的示例代码
Nov 18 Javascript
ionic grid(栅格)九宫格制作详解
Jun 30 Javascript
记录一篇关于redux-saga的基本使用过程
Aug 18 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
Oct 10 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
基于PHP编程注意事项的小结
2013/04/27 PHP
记录mysql性能查询过程的使用方法
2013/05/02 PHP
百万级别知乎用户数据抓取与分析之PHP开发
2015/09/28 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
在PHP中输出JS语句以及乱码问题的解决方案
2019/02/13 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
Angular2 PrimeNG分页模块学习
2017/01/14 Javascript
慕课网题目之js实现抽奖系统功能
2017/09/19 Javascript
vue.js中父组件调用子组件的内部方法示例
2017/10/22 Javascript
vue-cli监听组件加载完成的方法
2018/09/07 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
微信小程序下拉菜单效果的实例代码
2019/05/14 Javascript
在JavaScript中如何访问暂未存在的嵌套对象
2019/06/18 Javascript
JS实现提示效果弹出及延迟隐藏的功能
2019/08/26 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
js中switch语句的学习笔记
2020/03/25 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
2020/07/23 Javascript
vue的webcamjs集成方式
2020/11/16 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
2014/06/10 Python
Python中实现两个字典(dict)合并的方法
2014/09/23 Python
Python魔术方法详解
2015/02/14 Python
python每隔N秒运行指定函数的方法
2015/03/16 Python
PIL包中Image模块的convert()函数的具体使用
2020/02/26 Python
Python3爬虫关于代理池的维护详解
2020/07/30 Python
工厂搬迁方案
2014/05/11 职场文书
护士医德医风自我评价
2014/09/15 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
党员承诺书范文2015
2015/04/27 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
Python基于百度API识别并提取图片中文字
2021/06/27 Python
动画《平凡职业成就世界最强》宣布制作OVA
2022/04/01 日漫