创建你自己的 JavaScript 对象

对象有助于组织信息。

实例

创建对象的实例
本例向您展示如何创建 JavaCript 对象的实例 (instance)。
创建用于对象的模板
本例向您展示如何创建 JavaCript 对象的模板 (template)。

JavaScript 对象

在本教程前面的章节,我们已经学习到 JavaScript 拥有若干内置的对象,比如 String、Date、Array 等等。除了这些对象,你还可以创建自己的对象。

对象仅仅是一种特殊的数据类型而已,并拥有一系列的属性和方法。

让我们用一个例子来理解:一个人就是一个对象。属性是和对象有关的值。人的属性包括其名字、身高、体重、年纪、肤色、眼睛的颜色等等。所有的人都有这些属性,但是每个人的属性的值却各不相同。对象也拥有方法。方法是可施加于对象上的行为。人的方法可能是吃、睡、工作、玩等等。

属性

访问对象的属性的方法:

对象名.属性名

通过简单地向属性赋值,你就可以向对象添加属性。假定存在 personObj 这个对象 - 你可以添加诸如 firstname、lastname、age 以及 eyecolor 等属性。

personObj.firstname="John"
personObj.lastname="Doe"
personObj.age=30
personObj.eyecolor="blue"
document.write(personObj.firstname)

上面的代码生成以下的输出:

John

方法

对象可包含方法。

使用下面的语法来调用方法:

对象名.方法名()

注意:位于括号之间的用于方法的参数是可以省略的。

调用名为 sleep 的 personObj 对象的方法:

personObj.sleep()

创建你自己的对象

有多种不同的办法来创建对象:

1. 创建对象的实例

下列代码创建了一个对象的实例,并向其添加了四个属性:

personObj=new Object()
personObj.firstname="John"
personObj.lastname="Doe"
personObj.age=50
personObj.eyecolor="blue"

向 personObj 添加方法也很简单。下列代码向 personObj 添加了名为 eat() 的方法:

personObj.eat=eat

2. 创建对象的模版

模版定义了对象的结构。

function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname
this.lastname=lastname
this.age=age
this.eyecolor=eyecolor
}

注意:模版仅仅是一个函数。你需要在函数内部向 this.propertiName 分配内容。

一旦拥有模版,你就可以创建新的实例,就像这样:

myFather=new person("John","Doe",50,"blue")
myMother=new person("Sally","Rally",48,"green")

同样可以向 person 对象添加某些方法。并且同样需要在模版内进行操作:

function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname
this.lastname=lastname
this.age=age
this.eyecolor=eyecolor
this.newlastname=newlastname
}

注意:方法只是依附于对象的函数而已。然后,我们需要编写 newlastname() 函数:

function newlastname(new_lastname)
{
this.lastname=new_lastname
}

Newlastname() 函数定义 person 的新的 lastname,并将之分配给 person。通过使用 “this.”,JavaScript 即可得知你指的 person 是谁。因此,现在你可以这样写:myMother.newlastname("Doe")。

课外书

如需更多有关 JavaScript 对象的知识,请阅读 JavaScript 高级教程中的相关内容:

ECMAScript 面向对象技术
本节简要介绍了面向对象技术的术语、面向对象语言的要求以及对象的构成。
ECMAScript 对象应用
本节讲解了如何声明和实例化对象,如何引用和废除对象,以及绑定的概念。
ECMAScript 对象类型
本节介绍了 ECMAScript 的三种类型:本地对象、内置对象和宿主对象,并提供了指向相关参考手册的链接。
ECMAScript 对象作用域
本节讲解了 ECMAScript 作用域以及 this 关键字。
ECMAScript 定义类或对象
本节详细讲解了创建 ECMAScript 对象或类的各种方式。
ECMAScript 修改对象
本节讲解了如何通过创建新方法或重定义已有方法来修改对象。