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 fontcolor方法入门实例(按照指定的颜色来显示字符串)
Oct 17 Javascript
使用mouse事件实现简单的鼠标经过特效
Jan 30 Javascript
JavaScript动态提示输入框输入字数的方法
Jul 27 Javascript
jQuery遍历json的方法(推荐)
Jun 12 Javascript
jquery实现超简单的瀑布流布局【推荐】
Mar 08 Javascript
微信小程序 支付功能(前端)的实现
May 24 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
Dec 26 Javascript
swiper 解决动态加载数据滑动失效的问题
Feb 26 Javascript
MVVM 双向绑定的实现代码
Jun 21 Javascript
vue实例的选项总结
Jun 09 Javascript
解决vue页面渲染但dom没渲染的操作
Jul 27 Javascript
ElementUI 修改默认样式的几种办法(小结)
Jul 29 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
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
php常用数组函数实例小结
2016/12/29 PHP
JavaScript 在网页上单击鼠标的地方显示层及关闭层
2012/12/30 Javascript
jquery获取复选框被选中的值
2014/04/10 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
2015/03/14 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
2017/06/12 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
从零开始搭建一个react项目开发
2018/02/09 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
vue通信方式EventBus的实现代码详解
2019/06/10 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
2019/10/24 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
vue中watch和computed的区别与使用方法
2020/08/23 Javascript
Python中非常实用的一些功能和函数分享
2015/02/14 Python
python简单分割文件的方法
2015/07/30 Python
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
python笔记:mysql、redis操作方法
2017/06/28 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
夜大自我鉴定
2013/10/31 职场文书
单位门卫岗位职责
2013/12/20 职场文书
美术课外活动总结
2014/07/08 职场文书
2014年乡镇民政工作总结
2014/12/02 职场文书
中秋联欢会主持词
2015/07/04 职场文书
实现一个简单得数据响应系统
2021/11/11 Javascript
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/07 PostgreSQL
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang
MySQL索引 高效获取数据的数据结构
2022/05/02 MySQL
Python软件包安装的三种常见方法
2022/07/07 Python
Python使用pandas导入xlsx格式的excel文件内容操作代码
2022/12/24 Python