版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工厂后勤运维降本方案
- 钢结构吊装施工机械精准定位方案
- 企业现场管理中的员工培训体系
- 基坑作业安全培训课件
- 供水工程竣工验收报告
- 2026江苏扬州市高邮市人力资源服务有限公司招聘3人参考题库附答案详解(综合卷)
- 2026西安市浐灞实验小学教师招聘备考题库带答案详解(预热题)
- 2026下半年四川乐山市五通桥区紧密型城市医疗集团(医共体)编外护士招聘12人参考题库附参考答案详解【满分必刷】
- 2026江西南昌大学招聘科研助理1人(八)参考题库及参考答案详解【A卷】
- 心律失常的康复新技术应用
- 《传统手工艺》课件
- DB11T583-2022扣件式和碗扣式钢管脚手架安全选用技术规程
- 2025年度华住酒店集团酒店客房布草洗涤与供应合同
- GB/T 44963-2024储粮保水技术规范
- 国家开放大学电大《生产与运作管理》期末试题题库及答案试卷代号
- 2024年红河州国有资产(持股)经营有限公司招聘笔试冲刺题(带答案解析)
- 《实验室安全教育》课件-事故急救与应急处理
- 物业工程部管理方案
- 浦发银行征信异议申请书
- 个人房屋租赁合同房屋租赁合同
- 青霉素发酵的过程控制
评论
0/150
提交评论