




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章 JavaScript中的继承,在上一章中,已经学习了Document对象的属性和方法。在实际开发中,大量的JavaScript方法让初学者非常难以学习。有什么方法可以迅速学习和掌握JavaScript呢?在本章中,将要学习如何使用JavaScript面向对象的特征,使开发者容易学习、掌握JavaScript技术。 本章5.1节,将向读者讲解基本的JavaScript面向对象的特征。自5.2节至5.4节,将向读者讲解JavaScript高级面向对象的特征继承。通过本章的学习,相信聪明的读者一定可以掌握面向对象的JavaScript开发技术。,5.1 JavaScript中的对象,编程语言发展至今,基本上都是面向对象的语言。面向对象的语言十分优雅、便于学习和掌握、可以多次重用。在JavaScript中,大量使用内置对象。实际上,开发者可以利用JavaScript面向对象的特征,定义类、对象,从而进行面向对象开发。,5.1.1 什么是对象,在JavaScript中,没有明确的对类、对象等概念定义,但是JavaScript用其自己的方式实现了这些概念。 一般面向对象的语言里,对象被认为是通过类的构造函数进行实例化的,即类的实例。所有的对象都是由类进行定义的,具有类中定义各种属性和方法的实例。在JavaScript中,这些特征都得以实现。并且在JavaScript中,构造函数依然可以自定义,并且可以进行重载。 在JavaScript中的对象被认为是特性的集合。特性可以是函数、也可以是普通的成员变量或其他类的引用。如果特性是1个函数,那么该函数被认为是当前对象的方法,普通的成员变量被认为是对象的属性。,5.1.2 声明及实例化对象,JavaScript中,声明对象的可以通过var关键字进行。示例代码如下: var obj; JavaScript与其他面向对象的语言一样,也定义了new关键字作为实例化对象的操作符。实例化1个对象可以通过以下的代码实现: var obj1=new Object(); 在JavaScript中,对象的类型由实例化的类型决定。,5.1.3 对象的引用及销毁,在JavaScript中,变量可以存储原始值和引用值。原始值被认为存储在栈中,拥有固定大小,可以直接操纵。引用值被认为存储在堆中,引用值仅仅是内存指针即实际对象的引用。 实际上在JavaScript中,有5种类型的对象被认为是以原始值存储的。undefined、boolean、number、string、object5个类的对象大小固定,使用栈分配内存,故而被认为是原始值。在这里要特别指出的是null,null被认为是指向空object对象的引用。当运行以下代码时,结果为object。 function createObject() var obj=null; alert(typeof(obj); ,5.1.4 绑定机制,绑定机制是语言实现的关键,绑定机制是指将对象类型与对象实例紧密结合,通知编译器当前对象具有什么方法和属性。 绑定机制有两种,早期绑定和晚期绑定。 早期绑定:早期绑定是开发者最熟悉和使用最多的一种绑定方式。早期绑定具有这样的特点:对象声明时,对象的属性和方法就被编译成为对象的一部分、对象的类型一旦确定就不能进行随意的更改、对象类型的变换必须遵循特定的规则。在Java、C#、VB.NET这样的强类型语言中,都采用了早期绑定的方式。 晚期绑定:在一些弱类型的语言中,晚期绑定被大量使用。晚期绑定具有这样的特点:对象声明时,对象的属性和方法并没有编译为对象的一部分,而是在运行期动态检查对象是否具有相应的属性和方法。在JavaScript等弱类型的语言中,都采用了晚期绑定的方式。晚期绑定导致这些弱类型语言不能进行实时报错。,5.1.5 对象分类,在JavaScript中,将对象进行了分类,具有3种类型的对象:本地对象、内置对象、宿主对象。 本地对象是指不依赖浏览器实现,由JavaScript内部提供的内置类型。本地对象包括以下类型,如表所示。,本地对象类型列表,5.1.6 作用域、静态作用域、this关键字,作用域的概念即变量的作用范围,在面向对象的语言中作用域的概念尤为重要。C#、VB.NET、Java都提供了private、public、protectetd、friend、virturl等关键字进行作用域的约束,在JavaScript中只有一种作用域即公有作用域。在JavaScript中,所有对象的所有属性和方法都默认为公有的。 静态作用域也是面向对象开发中常见的作用域,静态作用域是指作用域适用于类,即所有对象都具有的。但是在JavaScript中,不能使用static、shared等关键字定义静态作用域。在JavaScript中,使用函数充当静态属性,来定义静态作用域。,5.1.7 定义类的方式(工厂方式、构造函数、原型方式、混合方式),在面向对象的开发中,类被认为是对象的模板。在JavaScript中,可以由开发者自定义类及类的方法和属性。 1工厂方式 2构造函数 3原型方式 4混合方式 在对象初始化完成前,Student._initialized并没有被声明或实例化,所以Student._initialized一定是undefined,那么就一定会执行if中的代码。If中的代码让对象的ShowSkill函数属性成为1个函数的引用,这样就实现了方法被所有对象公有。,5.1.8 实例以及实例方式使用的注意事项,在面向对象的JavaScript开发中,目前使用最广泛的是混合方式。动态原型方式也能够实现面向对象的基本特征,并且越来越流行。在开发中,可以采用这两种方式中的任何一种。尽量不要单独使用工厂方式、构造函数方式、原型方式的任何一种,否则会给开发带来不可预期的问题。,5.2 继承方式以及实现,在上节中,学习了如何创建自定义对象。面向对象具有四大特征:继承、封装、抽象、多态。而在面向对象的特征中,最重要的就是继承,其他特征都是为继承服务的。乃至于当界定1个语言是否是面向对象的语言时,首先需要检查该语言是否支持继承。 继承是面向对象开发中使用最多的特征,通过继承可以无限扩展父类(即父类)的功能,提高代码的重用性,便于维护。本节中,将要学习JavaScript面向对象的重要特征即继承。,5.2.1 继承方式以及实现,继承方式在JavaScript中,也有很多种方式。继承实现有多种方式,主要是因为JavaScript中对于继承没有明确的规范。所有继承实现的细节,并不是由解释器定制的,而是掌握在开发者的手中。 1伪装继承方式 2多重继承 3Function对象 4原型链,5.2.2 继承的重要实例,在实际开发中,需要经常去定义实体,或者进行接口进行继承。在这个实例中,展示在开发中如何定义父类、子类继承父类并扩展父类的方法。 实例中,首先定义汽车父类。汽车具有什么特征呢?总结如下: 具有引擎,引擎型号不一。 可以驾驶、使用燃料。 对驾驶者的驾驶资格要求各不相同(如驾驶者具有的驾驶执照等级要求)。,5.3 小结,本章学习了在JavaScript开发中如何实现面向对象特征的开发,首先从创建自定义类开始讲解,并讲解了一些在JavaScript中常用的类。讲解了原型方式、工厂方式、构造函数、混合方式创建对象的方法,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 灌溉机械制造工职业健康基础考核试卷及答案
- 高压试验工职业资格考前培训考核试卷及答案
- 稀土烟气回收工岗位合规化技术规程
- 2025广西南宁市人民路东段小学春季学期教师招聘1人模拟试卷及答案详解(有一套)
- 飞机特种设备检测与修理工月度考核试卷及答案
- 2025江苏省宿迁市沭阳县面向普通高校应届师范类毕业生招聘16人(第二批次)模拟试卷及完整答案详解
- 2025江西南昌市徐坊学校招聘派遣制教师1人考前自测高频考点模拟试题及答案详解(历年真题)
- Pelteobagrin-生命科学试剂-MCE
- Oxyphencyclimine-hydrochloride-Standard-生命科学试剂-MCE
- Olivetolic-acid-d9-生命科学试剂-MCE
- 河南天一大联考2025-2026学年(上)高一上学期9月检测语文试卷
- 养好小金鱼教学课件
- 2025年度社区工作者真题题库及答案
- 23G409先张法预应力混凝土管桩
- 物理课件电源和电流
- 《无人机载荷与行业应用》教学课件合集
- 《西安交通大学》课件
- 搜索引擎营销案例分析
- 华信惠悦GGS全球职等系统
- 肝血管瘤患者的护理查房
- 吉塔行星模拟课程
评论
0/150
提交评论