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 相关文章推荐
学习ExtJS form布局
Oct 08 Javascript
深入理解Javascript闭包 新手版
Dec 28 Javascript
JavaScript中实现最高效的数组乱序方法
Oct 11 Javascript
jquery实现的动态回到顶部特效代码
Oct 28 Javascript
基于jQuery实现美观且实用的倒计时实例代码
Dec 30 Javascript
浅析Javascript中bind()方法的使用与实现
Apr 29 Javascript
对js中回调函数的一些看法
Aug 29 Javascript
jquery tmpl模板(实例讲解)
Sep 02 jQuery
swiper插件自定义切换箭头按钮
Dec 28 Javascript
VUE+elementui面包屑实现动态路由详解
Nov 04 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
Dec 25 jQuery
TS 类型收窄教程示例详解
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
无数据库的详细域名查询程序PHP版(4)
2006/10/09 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
聊聊 PHP 8 新特性 Attributes
2020/08/19 PHP
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
jquery 利用show和hidden实现级联菜单示例代码
2013/08/09 Javascript
javascript获取xml节点的最大值(实现代码)
2013/12/11 Javascript
jQuery源码分析之Callbacks详解
2015/03/13 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
2016/05/09 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
浅谈jQuery框架Ajax常用选项
2017/07/08 jQuery
详解ES6 Promise的生命周期和创建
2019/08/18 Javascript
原生JS实现音乐播放器
2021/01/26 Javascript
[03:55]2016国际邀请赛中国区预选赛首日TOP10精彩集锦
2016/06/27 DOTA
python中字典(Dictionary)用法实例详解
2015/05/30 Python
实例讲解python中的序列化知识点
2018/10/08 Python
在Python中如何传递任意数量的实参的示例代码
2019/03/21 Python
python pygame实现方向键控制小球
2019/05/17 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
2019/05/27 Python
Python的互斥锁与信号量详解
2019/09/12 Python
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
联想新西兰官方网站:Lenovo New Zealand
2018/10/30 全球购物
Hoka One One法国官网:美国专业跑鞋品牌
2018/12/29 全球购物
Collection和Collections的区别
2016/05/02 面试题
临床医学应届生求职信
2013/11/06 职场文书
体育教育专业自荐信范文
2013/12/20 职场文书
财务管理专业自荐信范文
2013/12/24 职场文书
运动会广播稿500字
2014/01/28 职场文书
《手指教学》反思
2014/02/14 职场文书
升职自我推荐信范文
2015/03/25 职场文书
音乐剧猫观后感
2015/06/04 职场文书
php访问对象中的成员的实例方法
2021/11/17 PHP
vue项目支付功能代码详解
2022/02/18 Vue.js
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis