第八章 8.1 对象和属性(Objects and Properties)

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(20001131);  // Represents December 31, 2000 

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

var circle = { x:0, y:0, radius:2 }

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(  );

// Set a property in the object.
book.title = "JavaScript: The Definitive Guide"

// 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 };

// 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 的那些属性。

posted on 2005-04-22 14:06  NeilChen  阅读(846)  评论(0编辑  收藏  举报

导航