![现代JavaScript编程:经典范例与实践技巧](https://wfqqreader-1252317822.image.myqcloud.com/cover/657/26793657/b_26793657.jpg)
上QQ阅读APP看书,第一时间看更新
2-11 对象简介
ECMAScript中的引用类型实际上指的就是对象。对象是一组功能行为互补的数据集合,其可以用来模拟实现生活中的事物。举一个简单的例子,如果要开发一款教学系统,这个系统中需要包含老师和学生两类成员。其中,老师就是一种对象,学生也是一种对象。老师对象中可能会包含姓名、教师编号、专业、所带班级等,学生对象中可能会包含姓名、年龄、所学课程、所在班级等。当然,除了这些描述对象属性的数据外,对象中还需要包含一些行为,例如老师要进行教学、学生要学习考试等。在ECMAScript中,Object类型就是这样一种引用类型,其创建出来的实例被称为对象。
对象的创建有两种方式,第一种,可以直接通过Object构造方法来新建对象。以教师对象为例,代码如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P42_67189.jpg?sign=1739301923-HSIJZCx5wRM9kueHqf0EgqHPXw2ybgcb-0-8745d1480284ae350b2e7250fce51f70)
上面的代码为教师对象添加了姓名、年龄和所教科目的属性,并且为其添加了一个教学行为teach的方法。
第二种,也可以直接通过字面值的方式来创建教师对象,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P42_67194.jpg?sign=1739301923-2NBgfdrC7VIkrf7HNZgzHSqgprcLVSlf-0-42e6bca0704aa051b09a0b60090b2661)
如果将teacher对象与teacher2对象的类型都进行打印,可以看到它们都是Object类型,例如:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P42_67195.jpg?sign=1739301923-ivK9RORLtMekrl4zuO9HHFyjosdo5rYQ-0-5fb283dedb144ea87301793ca2af2b4b)
要使用对象的某个属性,有两种方式可以获取,比较方便且常用的方式是点语法,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P42_67196.jpg?sign=1739301923-ahbZ39NiJomr0TUbtXRnBSXZtjYufaeq-0-460764387a35061340be40b9de2abbb4)
也可以通过键名字符串的方式来获取对象的属性,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P43_69091.jpg?sign=1739301923-eIdLBTKZ65SvEU8osYTKvBchgqzgb7WS-0-eb2b782f743b8bd9272b5528f1ee5f9e)
需要注意,通过键名字符串的方式来取对象的属性时,所传入的键必须是字符串类型的。
对象中定义的函数用来描述对象的行为,同样可以使用点语法来使对象执行行为,示例如下:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P43_69092.jpg?sign=1739301923-a19etbpjfkrzdR5AvMMILSaYxkOjL172-0-21c11568bd028b9c061389d7b478a225)
同样,使用键名获取到的方法也可以执行:
![](https://epubservercos.yuewen.com/534FF6/15253386804113806/epubprivate/OEBPS/Images/Figure-P43_69093.jpg?sign=1739301923-ay5qPcSv47yaFDLajWS0kg0Ijjruyh5T-0-a159f337e8e76e905ecd82ca4fedab72)
至此,我们可以简单理解,万事万物都可以作为对象(但并不是全部)。基本的数据组合为简单的对象,简单的对象组合成复杂的对象,复杂的对象协作完成复杂的功能。这里,对于“对象”我们不做深入的研究,后面会详细介绍更加复杂的面向对象机制。