- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
js中prototype介绍
JS中的prototype
2011-06-03 14:40 by 轩脉刃,?129722?阅读,?67?评论,?收藏,?编辑JS中的phototype是JS中比较难理解的一个部分
?
本文基于下面几个知识点:
?
1 原型法设计模式
在.Net中可以使用clone()来实现原型法
原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展。我们称B的原型为A。
?
2 javascript的方法可以分为三类:
a 类方法
b 对象方法
c 原型方法
例子:
function?People(name){? =name;? //对象方法? this.Introduce=function(){? ? alert(My?name?is?+);? }}//类方法People.Run=function(){? alert(I?can?run);}//原型方法Ptotype.IntroduceChinese=function(){? alert(我的名字是+);}?//测试var?p1=new?People(Windking);p1.Introduce();People.Run();p1.IntroduceChinese();?
?
3 obj1.func.call(obj)方法
意思是将obj看成obj1,调用func方法
?
?
好了,下面一个一个问题解决:
?
prototype是什么含义?
?
javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用。
A.prototype = new B();
理解prototype不应把它和继承混淆。A的prototype为B的一个实例,可以理解A将B中的方法和属性全部克隆了一遍。A能使用B的方法和属性。这里强调的是克隆而不是继承。可以出现这种情况:A的prototype是B的实例,同时B的prototype也是A的实例。
?
先看一个实验的例子:
function?baseClass(){? this.showMsg?=?function()? {?????alert(baseClass::showMsg);???? }}function?extendClass(){}extendCtotype?=?new?baseClass();var instance?=?new?extendClass();instance.showMsg();?//?显示baseClass::showMsg
我们首先定义了baseClass类,然后我们要定义extentClass,但是我们打算以baseClass的一个实例为原型,来克隆的extendClass也同时包含showMsg这个对象方法。
extendCtotype = new baseClass()就可以阅读为:extendClass是以baseClass的一个实例为原型克隆创建的。
?
那么就会有一个问题,如果extendClass中本身包含有一个与baseClass的方法同名的方法会怎么样?
下面是扩展实验2:
function?baseClass(){????this.showMsg?=?function()????{????????alert(baseClass::showMsg);???????}}function?extendClass(){????this.showMsg?=function?()????{????????alert(extendClass::showMsg);????}}extendCtotype?=?new?baseClass();var instance?=?new?extendClass();instance.showMsg();//显示extendClass::showMsg
?
实验证明:函数运行时会先去本体的函数中去找,如果找到则运行,找不到则去prototype中寻找函数。或者可以理解为prototype不会克隆同名函数。
?
那么又会有一个新的问题:
如果我想使用extendClass的一个实例instance调用baseClass的对象方法showMsg怎么办?
?
答案是可以使用call:
extendCtotype?=?new?baseClass();var instance?=?new?extendClass();var?baseinstance?=?new?baseClass();baseinstance.showMs
您可能关注的文档
- helping others.ppt
- HP存储基础知识.ppt
- HR如何做好离职面谈?(附案例研究、实务方案).ppt
- HR薪酬必学之经典《华为公司战略薪酬管理及案例分析》.ppt
- HTML5,CSS3,javasript,网页制作,网页设计第2章网页文档编辑.ppt
- HTML5,CSS3,javasript,网页制作,网页设计第3章网页布局与交互.ppt
- HTML5,CSS3,javasript,网页制作,网页设计第4章网页表现语言——CSS.ppt
- HTML5,CSS3,javasript,网页制作,网页设计第5章Div+CSS布局页面.ppt
- HTML5,CSS3,javasript,网页制作,网页设计第7章链接与导航设计.ppt
- HTML5,CSS3,javasript,网页制作,网页设计第6章元素外观修饰.ppt
最近下载
- 2023年5月江苏南京市高三二模地理试题卷(含答案 ).pdf
- Shimano禧玛诺渔具 电动轮PLAYS 3000 3000XP(03980 03620)说明书.pdf
- 医院劳务人员派遣投标方案.docx
- 金相检验员考试题及答案.pdf
- 海上钢栈桥拆除专项施工方案.docx
- SY 4208-2016 表C.0.12 管道清管、测径检验批质量验收记录.doc VIP
- 公路施工安全教育培训.ppt
- 国家开放大学《中国法律史》形成性考核1-4 参考答案.docx
- 新北师大版小学4四年级数学下册期末测试卷8套(附答案).pdf VIP
- 外研版英语(三起点)四年级下册 Module10 大单元学历案教案 教学设计附作业设计(基于新课标教学评一体化).docx
文档评论(0)