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中的onkeyup和onkeydown区别介绍
Apr 28 Javascript
JS 使用for循环遍历子节点查找元素
Sep 06 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
Mar 26 Javascript
详解jQuery中的元素的属性和相关操作
Aug 14 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
Mar 08 Javascript
Web纯前端“旭日图”实现元素周期表
Mar 10 Javascript
angularjs实现搜索的关键字在正文中高亮出来
Jun 13 Javascript
基于Vuex无法观察到值变化的解决方法
Mar 01 Javascript
解决layui 复选框等内置控件不显示的问题
Aug 14 Javascript
如何在JavaScript中优雅的提取循环内数据详解
Mar 04 Javascript
webpack+vue.js构建前端工程化的详细教程
May 10 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
Jul 09 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将fileterms函数返回的结果变成可读的形式
2011/04/21 PHP
Symfony2学习笔记之模板用法详解
2016/03/17 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
PHP dirname功能及原理实例解析
2020/10/28 PHP
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
2011/01/12 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
移动设备web开发首选框架:zeptojs介绍
2015/01/29 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
2015/01/30 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
微信小程序 image组件binderror使用例子与js中的onerror区别
2017/02/15 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
EasyUI实现下拉框多选功能
2017/11/07 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
微信小程序如何使用云开发
2019/05/17 Javascript
在vue中使用console.log无效的解决
2020/08/09 Javascript
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
Python的pycurl包用法简介
2015/11/13 Python
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
用python解压分析jar包实例
2020/01/16 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
2020/11/18 Python
Python实现简单的2048小游戏
2021/03/01 Python
深入浅析css3 中display box使用方法
2015/11/25 HTML / CSS
如何使用html5与css3完成google涂鸦动画
2012/12/16 HTML / CSS
2013年大学生的自我鉴定
2013/10/24 职场文书
通信工程毕业生求职信
2013/11/16 职场文书
我的求职计划书
2014/01/10 职场文书
《维生素c的故事》教学反思
2014/02/18 职场文书
安全责任书范文
2014/08/25 职场文书
新闻发布会活动策划方案
2014/09/15 职场文书
曾国藩励志经典名言37句,蕴含哲理
2019/10/14 职场文书
实习员工转正的评语汇总,以备不时之需
2019/12/17 职场文书
Django migrate报错的解决方案
2021/05/20 Python