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 相关文章推荐
在JavaScript中,为什么要尽可能使用局部变量?
Apr 06 Javascript
JavaScript中的类继承
Nov 25 Javascript
javascript中使用replaceAll()函数实现字符替换的方法
Dec 25 Javascript
json数据的列循环示例
Sep 06 Javascript
JQuery动画animate的stop方法使用详解
May 09 Javascript
一个JavaScript用逗号分割字符串实例
Sep 22 Javascript
Node.js读写文件之批量替换图片的实现方法
Sep 07 Javascript
Javascript实现前端简单的路由实例
Sep 11 Javascript
关于Iframe父页面与子页面之间的相互调用
Nov 22 Javascript
JS数组返回去重后数据的方法解析
Jan 03 Javascript
微信小程序自定义弹窗wcPop插件
Nov 19 Javascript
深入浅析JavaScript中的in关键字和for-in循环
Apr 20 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
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
php 方便水印和缩略图的图形类
2009/05/21 PHP
PHP strncasecmp字符串比较的小技巧
2011/01/04 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
JQuery 动画卷页 返回顶部 动画特效(兼容Chrome)
2010/02/15 Javascript
Javascript类库的顶层对象名用户体验分析
2010/10/24 Javascript
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
JS脚本defer的作用示例介绍
2014/01/02 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
原生JS实现美图瀑布流布局赏析
2015/09/07 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
nodejs结合Socket.IO实现的即时通讯功能详解
2018/01/12 NodeJs
微信小程序模拟cookie的实现
2018/06/20 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
JavaScript面试中常考的字符串操作方法大全(包含ES6)
2020/05/10 Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
2020/10/26 Javascript
[28:42]Ti4正赛VG vs NEWBEE1
2014/07/19 DOTA
[01:00]DOTA2 store: Collection of Artisan's Wonders
2015/08/12 DOTA
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
详解Python爬虫的基本写法
2016/01/08 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
Django视图和URL配置详解
2018/01/31 Python
对python sklearn one-hot编码详解
2018/07/10 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
2020/03/30 Python
基于Python爬取股票数据过程详解
2020/10/21 Python
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
金融专业大学生自我评价
2014/01/09 职场文书
幼儿园教师个人反思
2014/01/30 职场文书
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
anaconda python3.8安装后降级
2021/06/11 Python
Win10 Anaconda安装python-pcl
2022/04/29 Servers