对象、类的定义与使用
对象与类是面向对象程序设计语言教学过程中不可避免需要讲解的内容之一。很多人将两者混为一谈,简单认为对象就是类,类就是对象。实际上深入分析的话,对象与类的区别还是较为明显的。本文主要介绍JavaScript中类与对象的概念区别及类的定义与使用。
Object对象与Class类
对象与类是面向对象的核心,不同教材对对象与类概念进行了不同阐述。一般理解为类的实例化结果即为对象。实际上深入分析的话,对象与类的区别还是较为明显的。归纳起来,类是对客观事物的描述与抽象,对象是类的实例。客观事物的抽象与描述是指抽取某类事物共同具有的状态与行为构成类。在程序设计语言中所抽取的状态与行为,即为类的属性(Attributes)与方法(method)。下图使用手机为例对象与类关系描述。
手机为例说明对象与类
使用手机对类与对象说明描述如上所示,其中华为、苹果、小米手机等现实世界中的物品,可直接表示为计算机中具体的对象。所有的手机对象抽取出共有的属性与方法就构成了抽象的数据类型,我们称为类。从类到对象的过程称为实例化,从对象到类可以理解为抽象与封装。
ECMAScript 5(ES5)类的定义
ECMAScript标准是JavaScript程序语言所遵循的规则与标准,在ECMAScript5及之前标准下的JavaScript语言中没有提供关于类Class相关标准与要求。在该标准下只能通过模拟实现类。目前使用模拟方法构造类方法较多,本文主要介绍两种常用方法:
1、Object对象原型法
在JavaScript中基本上所有的对象都是Object对象的实例,都继承了Object对象的方法与属性。通过使用Object对象可以创建用户自定义对象,并且可以通过prototype属性进行对象属性及方法的设置。以下以手机为例进行说明。定义一个手机对象,该对象属性包括品牌名字、价格两个属性,还具有一个输出显示手机品牌价格信息的方法。通过使用对象原型法编写实现代码如下图:
对象原型法实现类示例
如上图所示,我们为Object对象添加了两个属性uname与price分别标书手机品牌与价格,添加了两个方法分别完成赋值与输出显示。完成之后对Object进行了实例化操作,huawei与iphone就是实例化之后的对象。
2、构造函数法
构造函数法相对原型方法较更加容易理解,我们将一个函数直接实例化成类的对象,以此实现对类的模拟操作。如上例所示手机类及实例化对象,我们亦可以改用构造函数法进行模拟类对象的实现。主要实现代码描述如下:
构造函数实例化模拟类对象
构造函数实例化实现对象创建实例如上图所示,使用这种方法我们也可以快速设计模拟类的实例化实现。上例中的huawei与iphone可以看成类的实例化对象。
ECMAScript 6(ES6)类定义
尽管在ES5中没有使用class实现类的定义,但是class作为关键字进行了保留。在2015年推出的ES6版本中正式将Class作为对象模板,用于实现类的定义,尽管这里的Class本质上仍然是函数。使用Class实现类的定义基本语法描述如下:
Class定义语法
class定义基本语法描述如上图所示,借助class关键字,我们可以定义类并能够设置其属性与方法。针对前文所举例手机类、属性及方法,我们可以使用class进行定义。定义与使用描述如下图:
JavaScript类的定义与使用
使用Class关键字定义类,使得JavaScript中的类更加符合面向对象程序语言要求。从属性、方法等结构方面与我们真正意义上的类更加接近。
本头条号长期关注编程资讯分享;编程课程、素材、代码分享及编程培训。如果您对以上方面有兴趣或代码错误、建议与意见,可在评论区回复。更多程序设计相关教程及实例分享,期待大家关注与阅读!JavaScript基础教程系列教程链接如下:
JavaScript基础教程(八)Array数组对象定义与访问
JavaScript基础教程(七)函数的编写与使用
JavaScript基础教程(六)流程控制之循环语句
JavaScript基础教程(五)流程控制之条件语句