JScript Object 对象

更新:2007 年 11 月

JScript 中所有基于 Object 对象的对象都支持 expando 属性,即可以在程序运行时添加和移除的属性。

使用 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";

虽然索引运算符更常见于与访问数组元素相关联,但在用于对象时,索引始终是以字符串来表达的属性名称。

Array 对象有一个特殊的 length 属性,当添加新元素时,该属性会发生更改;一般说来,对象都没有长度属性,即使在使用索引运算符添加属性时也是如此。

请注意两种对象属性访问方式之间的重要差异。

运算符

将属性名称当作

表示属性名称

句点 (.)

标识符

“不能”当作数据来进行操作

索引 ([])

字符串

“可以”当作数据来进行操作

如果您在运行时之前不知道属性名称将是什么(例如,当您基于用户输入构造对象时),此差异将显得十分有用。若要从关联数组中提取所有属性,必须使用 for ... in 循环。

请参见

参考

Object 对象

其他资源

内部对象