付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、理解 Javascript 原型继承原理prototype 与prototype在有面象对象基础的前提下,来看一段代码:/Animal 构造函数function Animal(name)0304 = name;/Animal 原型对象Atotype = 0708id:Animal,sleep:function()0910alert(sleep);11 12var dog = new Animal(旺才);alert();/旺才alert(dog.id);/Animaldog.sleep()/sleep其对应的简易内存分配结构图:现在让来解释
2、一下这张内存图的来龙去脉:首先明确一点prototype与prototype 并不是同一个东西。那先来看prototype,每一个函数对象都有一个显示的prototype 属性,它代表了对象的原型,更明确的说是代表了由函数对象(构造函数)所创建出来的对象的原型。结合本例,Atotype 就是dog的原型,dog 所的那个对象将从Atotype 所的对象那继承属性与方法。每个对象都有一个名为Prototype的属性,指向于它所对应的原型对象。在本例中dog 的prototype指向Atotype,大家都知道,Atotype
3、也是一个对象,即然是一个对象,那它必然也有prototype属性指向于它所对应的原型对象,由此便了一种链表的结构,这就是原型链的概念。额外的是:不同的 JS 引擎实现者可以将Prototype属性命名为任何名字,并且设置它的可见性,前且只在 JS 引擎。虽然无法在 JS 代码中到Prototype(FireFox 中可以,名字为 proto 因为Mozilla 将它公开了),但可以使用对象的isPrototypeOf()方法进试,注意这个方在整个Prototype 链上进行判断。注:关于函数对象的具体内容,将在后继的博文中讲解。属性原则使用pName属性名为 proto ):一个
4、对象的属性时,按照下面的步骤进行处理(假设obj 的Prototype如果obj 存在propName 属性,返回属性的值,否则如果obj. proto 为null,返回undefined,否则返回obj. proto .propName调用对象的方法跟属性搜索过程一样,因为方法的函数对象就是对象的一个属性值。提示: 上面步骤中隐含了一个递归过程,步骤 3 中obj. proto 是另外一个对象,同样将采用 1, 2, 3这样的步骤来搜索propName 属性。这就是基于Prototype 的继承和共享。其中object1 的方法fn2 来自object2,概念上即object2 重写了obj
5、ect3 的方法fn2。JavaScript 对象应当都通过prototype 链关联起来,最顶层是Object,即对象都派生自Object 类型。结合是上面的理论,让再来看一个更加复杂的示例,他明确的解释了prototype、prototype、原型链以及属性的相关要点:view sourcepr?/Animal 构造函数function Animal(name)0304 = name;/Animal 原型对象Atotype = 0708id:Animal,sleep:function()0910alert(sleep);11 1213 function
6、 Human(name,age)14Animal.call(this,name);1516 17this.age = age;18 Htotype = new Animal();19 Htotype.id = Human;2021 Htotype.say = function()alert(o everyone,My name is + +,Im +this.age+22and Im a +this.id);23 24/Human 相关调用var jxl = new Human(笨蛋,25); 27 alert(
7、);/笨蛋28 alert(jxl.id);/Human29 jxl.say();/30o everyone,My name is 笨蛋,Im 25 and Im a Humanalert(Atotype.isPrototypeOf(jxl);/truealert(Ototype.isPrototypeOf(jxl);/true根据上面的代码,你能画出相应的内存图吗?好,让来看一下:注:prototype 的根为Ototype,对象Ototype 的prototype属性为null.其实,这里还有很多东西可以讲,但在其原理都在这上了,可试着调整一下代码的次序,如将Human
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年家庭智能照护系统项目可行性研究报告
- 2026福建龙岩漳平市招聘高校师范类毕业生101人备考题库带答案详解(能力提升)
- 2026福建泉州安溪六中招聘编外合同制教师备考题库及答案详解(夺冠系列)
- 2026甘肃武威凉州区五和镇选聘专业化管理村文书招聘1人备考题库及参考答案详解一套
- 2026福建漳州招商局经济技术开发区海滨学校招聘2人备考题库带答案详解ab卷
- 2026湖北事业单位联考咸宁市招聘132人备考题库带答案详解(精练)
- 2026年后方交叉碰撞预警系统 (RCTA)项目可行性研究报告
- 2026湖北襄阳市东风井关农业机械有限公司招聘6人备考题库附参考答案详解(培优)
- 萍乡市事业单位2026年统一公开招聘工作人员备考题库附参考答案详解(典型题)
- 2026河南周口市中心医院劳务派遣岗位招聘4人备考题库附参考答案详解(预热题)
- 红色故都瑞金教学课件
- 2026届高考地理一轮基础复习训练2地图、等高线地形图和地形剖面图
- 生物基戊二酸绿色合成工艺与催化剂优化设计
- 名企参考:万达集团组织结构及部门职责
- 电力林地占用赔补协议书
- 酒店高级技师试题及答案
- 2024年全国职业院校技能大赛高职组(社区服务实务赛项)考试题库(含答案)
- 2025廉洁过春节紧绷纪律弦春节廉洁提醒课件
- 招商证券科创板评测10题及答案2021
- DL∕T 2591-2023 垃圾发电厂垃圾储运系统运行规程
- 2024 年咨询工程师《宏观经济政策与发展规划》猛龙过江口袋书
评论
0/150
提交评论