浅谈javascript中原型(prototype)、构造函数、对象实例及三者之间的关系.doc_第1页
浅谈javascript中原型(prototype)、构造函数、对象实例及三者之间的关系.doc_第2页
浅谈javascript中原型(prototype)、构造函数、对象实例及三者之间的关系.doc_第3页
浅谈javascript中原型(prototype)、构造函数、对象实例及三者之间的关系.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浅谈javascript中原型(prototype)、构造函数、对象实例及三者之间的关系 一下内容是本人的学习之余为了增强记忆做的笔记,理解上或者有些肤浅,望高手莫笑;同时,既然是笔记,就难免有错误,若给各位造成误解还望海涵,也希望多多指教,谢谢! 首先说一下javascript中prototype的作用;该对象的用途是包含一种类型的所有实例都能共享的一些属性和方法,即如果为一个类型的prototype对象定义了一些属性,则该类型的所有实例都能访问到这些属性。请看下面例子:function Person(name,sex)=name;this.sex=sex;Ptotype.sayHello=function()alert(Hello,I am +); 定义一个Person对象,该对象有两个属性name和sex,为该对象的prototype属性定义一个sayHello方法;下面我们可以new两个Person的实例:var person1=new Person(Andy,man);var person2=new Person(Jacky,man); 现在,person1和person2都可以调用sayHello方法,因为sayHello方法属于Person的原型对象,而该对象的所有属性对于Person的所有实例都是公用的。调用sayHello:person1.sayHello();/Hello,I am Andy.person2.sayHello();/Hello,I am Jacky. js完全可以用另外一种方式给一个对象定义方法:function Person(name,sex)=name;this.sex=sex;this.sayHello=function()alert(Hello,I am +); 但是这种方式明显有一个问题,就是当我创建N个Person实例的时候会创建N个sayHello方法,而且这些方法功能相同!这很明显不合理,而用原型就能很好的避免这个问题,所以prototype的优越性也就体现出来了!同样用prototype还可以在js中实现继承。用prototype实现继承: 首先我定义一个Animal对象,然后让Person继承Animal. 定义Animal对象:function Animal()Atotype.canDo()alert(吃饭,睡觉);让Person对象继承Animal:Ptotype=new Animal();现在Person对象的实例就可以访问Animal的方法了:person1.canDo();/吃饭、睡觉 javascript中的构造函数: javascript中并没有提供一些像C#那样创建类的特殊语法。创建构造函数也和普通的函数并没有什么不同,只是写法上有些特定的规则(首字母大写)。如果用new关键字调用该函数,则也就创建了个新实例,该函数会被当做构造函数调用。如果当成一般的函数调用,会出现一些值得注意的现象,请看下面的代码:Person(Mr zhang,man);alert();/Mr zhang很明显,如果这样调用一个构造函数,则该函数的参数将被赋予window对象,也就是全局变量。下面说一下原型、构造函数和对象实例三者之间的关系。 当你创建一个对象的时候,也就同时也创建了一个该对象的prototype对象,也就是说prototype是构造函数的一个属性。而在prototype对象里同样有一个属性:constructor,该对象指向构造函数(没有通过prototype实现继承的情况下),例如:alert(Ptotype.constructor);Person对象的每个实例(person1、person2)都有一个_proto_属性,该属性指向构造函数的prototype对象。可以用isprototypeof(该方法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论