前言
到目前为止,我们看到的大多数引用类型都是Object类型的示例,而且,Object也是ECMAScript中使用最多的一个类型。虽然Object的实例不具备多少功能,但对于程序中存储和传输数据而言,它们确实是非常理想的选择。
创建方式
创建Object实例的方式有两种。第一种是使用new操作符后跟Object构造函数,如下所示:
var person=new Object();
person.name="a";
person.age=29;
另一种方式是使用对象字面量表示法。对象字面量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程。下面例子使用对象字面量语法定义了与前面那个例子中相同的person对象:
var person={
name:"a",
age:29
};
这个例子中,“{“表示对象字面量的开始。赋值操作符标识后面是一个值,所以“{”表示一个表达式的开始。然后定义name属性,后接“:”,再后面是这个属性的值。在对象字面量中,使用逗号来分隔不同的属性,因此“a”后面是一个“,”但在最后一个属性(age)后面不可添加“,”。在使用对象字面量语法时,属性名也可以使用字符串,如下所示:
var person={
"name":"a",
"age":29
};
访问对象属性
一般来说,访问对象属性时使用的都是点表示法,不过在JavaScript也可以使用方括号表示法来访问对象的属性。如下所示:
alert(person["name"]);//a
alert(person.name);//a
从功能上看,这两种访问对象属性的方法没有任何区别。但方括号语法的主要优点是可以通过变量来访问属性,例如:
var propertyName="name";
//person对象中并不包含propertyName属性,但可用方括号表示法通过propertyName变量访问person存在的name属性。
alert(person[propertyName]);//a
如果属性名中包含会导致语法错误的字符,或者属性名使用的是关键字或保留字,也可以使用方括号表示法。例如:
person["first name"]="a";
由于first name中包含一个空格,所以不能使用点表示法来访问它。然而,属性名中是可以包含非字母非数字的,这时候就可以使用方括号表示法来访问它们。
通常,除非必须使用变量来访问属性,否则一般建议使用点表示法。