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 相关文章推荐
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
Jun 09 Javascript
jQuery 的全选(全非选)即取得被选中的值使用介绍
Nov 12 Javascript
二叉树先序遍历的非递归算法具体实现
Jan 09 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
Feb 22 Javascript
jQuery浏览器CSS3特写兼容实例
Jan 19 Javascript
PHPExcel中的一些常用方法汇总
Jan 23 Javascript
基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
Jan 22 Javascript
JS功能代码集锦
May 04 Javascript
jQuery实现div横向拖拽排序的简单实例
Jul 13 Javascript
清除浏览器缓存的几种方法总结(必看)
Dec 09 Javascript
JavaScript表单验证实现代码
May 22 Javascript
vue中导出Excel表格的实现代码
Oct 18 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
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
2014/06/12 PHP
php对象和数组相互转换的方法
2015/05/12 PHP
JavaScript中的16进制字符(改进)
2011/11/21 Javascript
javascript学习笔记(二十) 获得和设置元素的特性(属性)
2012/06/20 Javascript
基于jquery自定义图片热区效果
2012/07/21 Javascript
jQuery学习总结之jQuery事件
2014/06/30 Javascript
node模块机制与异步处理详解
2016/03/13 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
详解html-webpack-plugin用法全解
2018/01/22 Javascript
解析vue data不可以使用箭头函数问题
2018/07/03 Javascript
微信小程序实现登录遮罩效果
2018/11/01 Javascript
NodeJs实现简易WEB上传下载服务器
2019/08/10 NodeJs
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
详解JS深拷贝与浅拷贝
2020/08/04 Javascript
JS实现拖动模糊框特效
2020/08/25 Javascript
python脚本替换指定行实现步骤
2017/07/11 Python
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
聊聊Python中的pypy
2018/01/12 Python
Python实现的HMacMD5加密算法示例
2018/04/03 Python
详解Python字典的操作
2019/03/04 Python
Django框架会话技术实例分析【Cookie与Session】
2019/05/24 Python
树莓派实现移动拍照
2019/06/22 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
2019/07/31 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
python实现字典嵌套列表取值
2019/12/16 Python
Python pip install如何修改默认下载路径
2020/04/29 Python
幼儿园大班评语大全
2014/04/17 职场文书
九一八事变演讲稿
2014/09/05 职场文书
优秀党员先进材料
2014/12/18 职场文书
2016新年年会主持词
2015/07/06 职场文书
《生物入侵者》教学反思
2016/02/16 职场文书
浅析InnoDB索引结构
2021/04/05 MySQL
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS