object 是一些值的集合。他允许我们通过一个关联的名称来取出值。简而言之,就是一些 key / value 的组合。其中的 value 可以是原始 (primitive) 数据类型(number, string), 也可以是 object。

如何创建 object

object 可以通过 new 操作符来创建。后面跟一个构造函数名(constructor),这个 constructor 用来进行初始化。例如:

第八章 8.1 对象和属性(Objects and Properties)var o = new Object(); // 创建一个空对象(没有任何属性的)。
第八章 8.1 对象和属性(Objects and Properties)

也可以利用内建的一些 constructor 函数来创建一些对象。比如:

第八章 8.1 对象和属性(Objects and Properties)var now = new Date(  );                        // The current date and time
第八章 8.1 对象和属性(Objects and Properties)

第八章 8.1 对象和属性(Objects and Properties)
var new_years_eve = new Date(20001131);  // Represents December 31, 2000 

还有一种创建对象的方式叫做“object 字面值”(object literals),其语法如下:

第八章 8.1 对象和属性(Objects and Properties)var circle = { x:0, y:0, radius:2 }
第八章 8.1 对象和属性(Objects and Properties)
第八章 8.1 对象和属性(Objects and Properties)
var homer = {
第八章 8.1 对象和属性(Objects and Properties)              name: 
"Homer Simpson",
第八章 8.1 对象和属性(Objects and Properties)              age: 
34,
第八章 8.1 对象和属性(Objects and Properties)              married: 
true,
第八章 8.1 对象和属性(Objects and Properties)              occupation: 
"plant operator",
第八章 8.1 对象和属性(Objects and Properties)              email: 
"homer@simpsons.com"
第八章 8.1 对象和属性(Objects and Properties)}; 

这种语法是在 ECMAScript v3 中定义的。JavaScript 1.2 以及更高版本都实现了。

存取 Object 里的值,使用 “.” 操作符即可。一些例子:

第八章 8.1 对象和属性(Objects and Properties)// Create an object. Store a reference to it in a variable.
第八章 8.1 对象和属性(Objects and Properties)
var book = new Object(  );
第八章 8.1 对象和属性(Objects and Properties)
第八章 8.1 对象和属性(Objects and Properties)
// Set a property in the object.
第八章 8.1 对象和属性(Objects and Properties)
book.title = "JavaScript: The Definitive Guide"
第八章 8.1 对象和属性(Objects and Properties)
第八章 8.1 对象和属性(Objects and Properties)
// Set some more properties. Note the nested objects.
第八章 8.1 对象和属性(Objects and Properties)
book.chapter1 = new Object(  );
第八章 8.1 对象和属性(Objects and Properties)book.chapter1.title 
= "Introduction to JavaScript";
第八章 8.1 对象和属性(Objects and Properties)book.chapter1.pages 
= 19;
第八章 8.1 对象和属性(Objects and Properties)book.chapter2 
= { title: "Lexical Structure", pages: 6 };
第八章 8.1 对象和属性(Objects and Properties)
第八章 8.1 对象和属性(Objects and Properties)
// Read some property values from the object.
第八章 8.1 对象和属性(Objects and Properties)
alert("Outline: " + book.title + "\n\t" +
第八章 8.1 对象和属性(Objects and Properties)      
"Chapter 1 " + book.chapter1.title + "\n\t" +
第八章 8.1 对象和属性(Objects and Properties)      
"Chapter 2 " + book.chapter2.title); 

枚举对象的属性

用 for...in 语法,例子如下:

第八章 8.1 对象和属性(Objects and Properties)function DisplayPropertyNames(obj) {
第八章 8.1 对象和属性(Objects and Properties)    
var names = "";
第八章 8.1 对象和属性(Objects and Properties)    
for(var name in obj) names += name + "\n";
第八章 8.1 对象和属性(Objects and Properties)    alert(names);
第八章 8.1 对象和属性(Objects and Properties)

这个语法仅仅列举用户定义的那些属性,而不列举预定义的那些。列举属性是不按任何固定次序的。

undifined

如果要取出一个不存在的属性,则会得到 undefined.
要删除一个已有的属性,用 delete 操作符。语法如下:

第八章 8.1 对象和属性(Objects and Properties)delete book.chapter2;

这个操作不是仅仅把该属性设成 undefined. 而是从对象中彻底除去。用 for...in 循环可以测试出这一点。for...in 语法会列出值为 undefined 的那些属性。

相关文章: