JScript Object 物件

JScript 中所有物件的基礎包括了 Object 物件支援 expando 屬性 (Property),或是可以在程式執行時加入及移除的屬性。

使用 Object 物件

這些屬性可以有任何名稱,包括數字。 如果屬性名稱是簡單識別項,屬性名稱可以寫在物件名稱後的句號之後,例如:

var myObj = new Object();
// Add two expando properties, 'name' and 'age'
myObj.name = "Fred"; 
myObj.age = 53;

您也可以利用索引運算子 [] 來存取物件的屬性。 如果屬性名稱不是簡單識別項,或是您撰寫指令碼時不知道屬性名稱,就會需要這個運算子。 方括弧內的任意運算式 (包含簡單識別項),可以索引這個屬性。 在將 JScript 的所有 expando 屬性名稱加入物件之前,會先將屬性名稱轉換為字串。

使用索引運算子時,會將這個物件視為「關聯陣列」。 關聯陣列是一種資料結構,它可以動態的讓任意資料值與任意字串相關聯。 這個範例加入的 expando 屬性,沒有簡單識別項。

var myObj = new Object();
// This identifier contains spaces.
myObj["not a simple identifier"] = "This is the property value";
// This identifier is a number.
myObj[100] = "100";

雖然索引運算子與存取陣列元素比較有關,但是索引與物件搭配使用時,它永遠都是表示為字串常值 (String Literal) 的屬性名稱。

Array 物件有一個特殊 length 屬性,它會隨著新元素的加入而變更;即使以索引運算子來加入屬性,物件通常沒有長度屬性。

請注意存取物件屬性的兩種方式之間的重要差異。

運算子

屬性名稱被視為

代表屬性名稱

句號 (.)

識別項

「無法」當做資料來管理

索引 ([])

字串常值

可以當做資料來管理

如果您要到執行階段才會知道屬性名稱 (例如,根據使用者輸入來建構物件時),這項差異就變得很有用。 若要從關聯陣列中擷取所有屬性,必須使用 for ... in 迴圈 (Loop)。

請參閱

參考

Object 物件

其他資源

內建物件