JAVASCRIPT面向对象基础总结_第1页
JAVASCRIPT面向对象基础总结_第2页
JAVASCRIPT面向对象基础总结_第3页
JAVASCRIPT面向对象基础总结_第4页
JAVASCRIPT面向对象基础总结_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、javascript面向对象基础1.使用调用对象的属性和方法functionUser()this.age=21;this.sex="男?"varuser=newUser();alert(user"age");2.动态添加,修改,删除对象的属性和方法/定义类varuser=newObject();/添加属性和方法="cary"user.age=21;user.show=function()alert(+"年?龄?为?:?"+this.age);/执行方法user.show();/修

2、改属性和方法="James"user.show=function()alert(+"你?好?");/执行方法user.show();/删除属性和方法="undefined"user.show="undefined"/执行方法user.show();3.使用大括号语法创建无类型对象varobj=;varuser=name:"cary",age:21,show:function()alert(+"年?龄?为?:?&qu

3、ot;+this.age);user.show();varobj=;等价于varobj=newObject();4.Prototype原型对象每个函数function也是一个对象,对应的类类型为“Function”,每个函数对象都有一个子对象prototype,表示函数的原型,所以当我们new一个类的对象的时候prototype对象的成员都会被实例化为对象的成员。例如:functionclass1()alert("prototyemember");varobj=newclass1();obj.show();5.Function函数对象详解5.1Function和Date,A

4、rray,String等一样都属于JavaScript的内部对象,这些对象的构造器是由JavaScript本身所定义的。上面说过函数对象对应的类型是Function,这个和数组的对象是Array一个道理。所以也可以像newArray()一样newFunction()来创建一个函数对象,而函数对象除了使用这种方式还可以使用function关键字来创建。我们之所以不经常使用newFunction()的方式来创建函数是因为一个函数一般会有很多语句,如果我们将这些都传到newFunction()的参数中会显得可读性比较差。varfunctionName=newFunction(p1,p2,.,pn,b

5、ody)其中p1到pn为参数,body为函数体。5.2有名函数和无名函数有名函数:functionfuncName()无名函数:varfuncName=function()他们之间的唯一区别:就是对于有名函数他可以出现在调用之后再定义,而对于无名函数,他必须是在调用之前就已经定义好。5.3我们可以利用Function的prototype对象来扩展函数对象,如:alert("扩展方法");functionfun()fun.show();fun.show().show();fun.show().show();这句的意思是调用fun.show()这个函数对象的show方法。是一个

6、递归的调用,因为fun.show()也是一个函数。5.46.传递给参数的隐含参数arguments我们在使用函数时除了传递制定的参数,还创建了一个隐含的参数arguments,如下:functionfun(a,b)for(vari=0;i<arguments.length;i+)alert(argumentsi);fun(1,2,3);arguments还有一个属性是callee,表示对函数对象本身的引用。7.函数的apply,call方法他们的作用都是将函数绑定到另外一个对象上去运行,两者只是在定义参数上有区别,如下:下面是例子,obj1的show1方法绑定到obj2后整个函数的执行环

7、境就转移到了obj2,所以this指针也就指向了obj2,所以会显示fun2t:functionfun1()="fun1"this.show1=function(arg)alert(+arg);functionfun2()="fun2"this.show2=function(arg)alert(+arg);varobj1=newfun1();varobj2=newfun2();8.JavaScript中的类实现8.1命名空间:我们可以使用如下方式实现命名空间,namespace1可以

8、看做为命名空间。varnamespace1=newObject();namespace1.class1=function()/对?象初始化代码varobj1=newnamespace1.class1();8.2类成员上面的我们已经为类添加了成员和方法,除了上面的方法我们还可以使用prototype的方式来给类添加成员,我们怎么做才是最合理的呢,首先来看下前面的方式:functionUser()/构造函数/成员定义alert();上面的方式我们每定义一个类成员都要去写Utotype,我们可以重构为下面的形式:functionUser()/构造函数/成员定义User

9、.prototype=name:"cary",show=function()alert();8.3私有成员实现类的私有成员主要是利用变量的作用域,我们在构造函数中实现。functionUser()/构造函数中定义私有成员varname="cary"functionshow()alert(name);/共有成员this.setname=function()name="james"8.4静态成员我们可以通过给一个函数对象直接添加成员来实现静态成员,如:functionclass1()/静态属性和方法class1.staticpr="staticpr"class1.staticmet=function()/调用class1.staticmet();我们可以通过给函数对象所在的类Function添加成员来实现给所有的函数对象默认添加静态成员,如下:functionclass1()/调用class1.staticmet();9.实现反射机制使用for(.in.)方式,for中的varp来存储User对象的属性和方法,我们来判断是属性还是方法,如下:functionUser()/构造函数/成员定义Utotyp

温馨提示

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

评论

0/150

提交评论