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 特殊字符串
Feb 25 Javascript
提示$ is not defined错误分析及解决
Apr 09 Javascript
在javascript中对于DOM的加强
Apr 11 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
Mar 12 Javascript
javascript 10进制和62进制的相互转换
Jul 31 Javascript
JavaScript异步加载浅析
Dec 28 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
Nov 17 Javascript
javascript实现移动端上的触屏拖拽功能
Mar 04 Javascript
jQuery点击输入框显示验证码图片
May 19 Javascript
jQuery Migrate 插件用法实例详解
May 22 jQuery
JS实现页面跳转与刷新的方法汇总
Aug 30 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
Sep 11 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
使ecshop模板中可引用常量的实现方法
2011/06/02 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
Yii中Model(模型)的创建及使用方法
2015/12/28 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
一句话JavaScript表单验证代码
2009/08/02 Javascript
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
2010/08/03 Javascript
用Mootools获得操作索引的两种方法分享
2011/12/12 Javascript
JS打开图片另存为对话框实现代码
2012/12/26 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
JavaScript中各种引用类型的常用操作方法小结
2016/05/05 Javascript
jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
2016/06/12 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
vue插件实现v-model功能
2018/09/10 Javascript
js实现页面多个日期时间倒计时效果
2019/06/20 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
vue点击按钮动态创建与删除组件功能
2019/12/29 Javascript
[08:29]DOTA2每周TOP10 精彩击杀集锦vol.7
2014/06/25 DOTA
Python连接phoenix的方法示例
2017/09/29 Python
详谈Python高阶函数与函数装饰器(推荐)
2017/09/30 Python
python字典操作实例详解
2017/11/16 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
2019/06/21 Python
python字典setdefault方法和get方法使用实例
2019/12/25 Python
python实现一次性封装多条sql语句(begin end)
2020/06/06 Python
python使用正则表达式匹配txt特定字符串(有换行)
2020/12/09 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
python字典与json转换的方法总结
2020/12/28 Python
html5时钟实现代码
2010/10/22 HTML / CSS
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
3个CCIE对一个工程师的面试题
2012/05/06 面试题
党员干部群众路线个人整改措施
2014/09/18 职场文书
个性与发展自我评价
2015/03/06 职场文书