object 是一些值的集合。他允许我们通过一个关联的名称来取出值。简而言之,就是一些 key / value 的组合。其中的 value 可以是原始 (primitive) 数据类型(number, string), 也可以是 object。
如何创建 object
object 可以通过 new 操作符来创建。后面跟一个构造函数名(constructor),这个 constructor 用来进行初始化。例如:
var
o
=
new
Object();
//
创建一个空对象(没有任何属性的)。
也可以利用内建的一些 constructor 函数来创建一些对象。比如:
var
now
=
new
Date( );
//
The current date and time
var
new_years_eve
=
new
Date(
2000
,
11
,
31
);
//
Represents December 31, 2000
还有一种创建对象的方式叫做“object 字面值”(object literals),其语法如下:
var
circle
=
{ x:
0
, y:
0
, radius:
2
}
![None.gif](/Images/OutliningIndicators/None.gif)
var
homer
=
{
name:
"
Homer Simpson
"
,
age:
34
,
married:
true
,
occupation:
"
plant operator
"
,
email:
"
homer@simpsons.com
"
};
这种语法是在 ECMAScript v3 中定义的。JavaScript 1.2 以及更高版本都实现了。
存取 Object 里的值,使用 “.” 操作符即可。一些例子:
//
Create an object. Store a reference to it in a variable.
var
book
=
new
Object( );
![None.gif](/Images/OutliningIndicators/None.gif)
//
Set a property in the object.
book.title
=
"
JavaScript: The Definitive Guide
"
![None.gif](/Images/OutliningIndicators/None.gif)
//
Set some more properties. Note the nested objects.
book.chapter1
=
new
Object( );
book.chapter1.title
=
"
Introduction to JavaScript
"
;
book.chapter1.pages
=
19
;
book.chapter2
=
{ title:
"
Lexical Structure
"
, pages:
6
};
![None.gif](/Images/OutliningIndicators/None.gif)
//
Read some property values from the object.
alert(
"
Outline:
"
+
book.title
+
"
\n\t
"
+
"
Chapter 1
"
+
book.chapter1.title
+
"
\n\t
"
+
"
Chapter 2
"
+
book.chapter2.title);
枚举对象的属性
用 for...in 语法,例子如下:
function
DisplayPropertyNames(obj) {
var
names
=
""
;
for
(
var
name
in
obj) names
+=
name
+
"
\n
"
;
alert(names);
}
这个语法仅仅列举用户定义的那些属性,而不列举预定义的那些。列举属性是不按任何固定次序的。
undifined
如果要取出一个不存在的属性,则会得到 undefined.
要删除一个已有的属性,用 delete 操作符。语法如下:
delete
book.chapter2;
这个操作不是仅仅把该属性设成 undefined. 而是从对象中彻底除去。用 for...in 循环可以测试出这一点。for...in 语法会列出值为 undefined 的那些属性。