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 相关文章推荐
在网页中屏蔽快捷键
Sep 06 Javascript
jquery select选中的一个小问题
Oct 11 Javascript
jQuery生成asp.net服务器控件的代码
Feb 04 Javascript
jQuery boxy弹出层插件中文演示及使用讲解
Feb 24 Javascript
[原创]推荐10款最热门jQuery UI框架
Aug 19 Javascript
JavaScript模块化开发之SeaJS
Dec 13 Javascript
require.js 加载过程与使用方法介绍
Oct 30 Javascript
vue 解决数组赋值无法渲染在页面的问题
Oct 28 Javascript
浅谈vue中组件绑定事件时是否加.native
Nov 09 Javascript
axios封装与传参示例详解
Oct 18 Javascript
再也不怕 JavaScript 报错了,怎么看怎么处理都在这儿
Dec 09 Javascript
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
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设计模式 FlyWeight (享元模式)
2011/06/26 PHP
PHPThumb PHP 图片缩略图库
2012/03/11 PHP
php单例模式的简单实现方法
2016/06/10 PHP
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
PHP实现ASCII码与字符串相互转换的方法
2017/04/29 PHP
php的常量和变量实例详解
2017/06/27 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
实例讲解PHP表单
2020/06/10 PHP
项目实践之javascript技巧
2007/12/06 Javascript
理解JSON:3分钟课程
2011/10/28 Javascript
JS图片无缝滚动(简单利于使用)
2013/06/17 Javascript
javascript得到当前页的来路即前一页地址的方法
2014/02/18 Javascript
Javascript通过overflow控制列表闭合与展开的方法
2015/05/15 Javascript
jQuery实现强制cookie过期方法汇总
2015/05/22 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
layui radio点击事件实现input显示和隐藏的例子
2019/09/02 Javascript
js实现3D照片墙效果
2019/10/28 Javascript
js new Date()实例测试
2019/10/31 Javascript
JS+CSS+HTML实现“代码雨”类似黑客帝国文字下落效果
2020/03/17 Javascript
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
Python基础语法(Python基础知识点)
2016/02/28 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
2020/09/22 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
详解HTML5通讯录获取指定多个人的信息
2016/12/20 HTML / CSS
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
医学生个人求职信范文
2013/09/24 职场文书
毕业生自荐信的主要内容
2013/10/29 职场文书
入党思想汇报
2014/01/05 职场文书
初婚初育证明
2014/01/14 职场文书
数学教师个人工作总结
2015/02/06 职场文书
pycharm无法导入lxml的解决办法
2021/03/31 Python
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle