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的一些特性和用法整理小结
Jan 13 Javascript
JavaScript 比较时间大小的代码
Apr 24 Javascript
jquery validate.js表单验证的基本用法入门
May 13 Javascript
使用vue编写一个点击数字计时小游戏
Aug 31 Javascript
微信小程序  自定义创建详细介绍
Oct 27 Javascript
jQuery实现QQ空间汉字转拼音功能示例
Jul 10 jQuery
使用vue-cli+webpack搭建vue开发环境的方法
Dec 22 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
Dec 09 Javascript
Vue项目路由刷新的实现代码
Apr 17 Javascript
Vue最新防抖方案(必看篇)
Oct 30 Javascript
JavaScript实现左右滚动电影画布
Feb 06 Javascript
vant picker+popup 自定义三级联动案例
Nov 04 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
COM in PHP (winows only)
2006/10/09 PHP
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
PHP操作数组相关函数
2011/02/03 PHP
php入门学习知识点五 关于php数组的几个基本操作
2011/07/14 PHP
基于PHP一些十分严重的缺陷详解
2013/06/03 PHP
共享自己写一个框架DreamScript
2007/01/20 Javascript
实现连缀调用的map方法(prototype)
2009/08/05 Javascript
基于JQuery的列表拖动排序实现代码
2013/10/01 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
深入解析JavaScript的闭包机制
2015/10/20 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
使用JQuery选择HTML遍历函数的方法
2016/09/17 Javascript
Angular动态添加、删除输入框并计算值实例代码
2017/03/29 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
npm 常用命令详解(小结)
2019/01/17 Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
Python发送email的3种方法
2015/04/28 Python
分享一个简单的python读写文件脚本
2017/11/25 Python
Python爬虫获取图片并下载保存至本地的实例
2018/06/01 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
解决新django中的path不能使用正则表达式的问题
2018/12/18 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
python实现抽奖小程序
2020/04/15 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
2021/01/12 Python
纯CSS3实现的阴影效果
2014/12/24 HTML / CSS
意大利折扣和优惠券网站:Groupalia
2019/10/09 全球购物
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
给朋友的道歉信
2014/01/09 职场文书
淘宝客服自我总结鉴定
2014/01/25 职场文书
授权委托书样本
2014/09/25 职场文书
群众对十八届四中全会的期盼
2014/10/17 职场文书
教师党员承诺书2015
2015/01/21 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
详解Laravel制作API接口
2021/05/31 PHP
使用CSS设置滚动条样式
2022/01/18 HTML / CSS