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 TimeField 显示正常时间格式的代码
Jun 28 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
Dec 25 Javascript
Javascript实现简单二级下拉菜单实例
Jun 15 Javascript
jQuery背景插件backstretch使用指南
Apr 21 Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
Jun 12 Javascript
解决vue页面DOM操作不生效的问题
Mar 17 Javascript
js 数组详细操作方法及解析合集
Jun 01 Javascript
浅谈node中的cluster集群
Jun 02 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
Sep 03 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
Feb 12 Javascript
微信小程序修改数组长度的问题的解决
Dec 17 Javascript
利用js实现简易红绿灯
Oct 15 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连接局域网MYSQL数据库的简单实例
2013/08/26 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
php while循环控制的简单实例
2016/05/30 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
JQuery中根据属性或属性值获得元素(6种情况获取方法)
2013/01/17 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
2014/03/03 Javascript
jQuery对val和atrr("value")赋值的区别介绍
2014/09/26 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
jQuery中extend函数的实现原理详解
2015/02/03 Javascript
javascript使用avalon绑定实现checkbox全选
2015/05/06 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
js判断PC端与移动端跳转
2020/12/24 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
详解javascript常用工具类的封装
2018/01/30 Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
2018/02/09 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
vue+elementUi图片上传组件使用详解
2019/08/20 Javascript
vue 检测用户上传图片宽高的方法
2020/02/06 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
详解JavaScript中的Object.is()与"==="运算符总结
2020/06/17 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
Python实现的数据结构与算法之链表详解
2015/04/22 Python
python脚本替换指定行实现步骤
2017/07/11 Python
Python用for循环实现九九乘法表
2018/05/31 Python
pygame游戏之旅 添加icon和bgm音效的方法
2018/11/21 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
使用numpngw和matplotlib生成png动画的示例代码
2021/01/24 Python
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
C语言变量的命名规则都有哪些
2013/12/27 面试题
自荐书范文
2013/12/08 职场文书
信息总监管理职责范本
2014/03/08 职场文书
门卫管理制度范本
2015/08/05 职场文书