在 ActionScript 3.0 中有两种创建关联数组的方式。第一种方式是使用 Object 实例。使用 Object 实例,您可以通过对象文本来初始化数组。Object 类的实例(也称为“通用对象”)在功能上等同于关联数组。通用对象的每个属性名称都用作键,提供对存储的值的访问。
下面的示例创建一个名为 monitorInfo 的关联数组,并使用对象文本初始化具有两个键和值对的数组:
var monitorInfo:Object = {type:"Flat Panel", resolution:"1600 x 1200"};
trace(monitorInfo["type"], monitorInfo["resolution"]);
// output: Flat Panel 1600 x 1200
如果在声明数组时不需要初始化,可以使用 Object 构造函数创建数组,如下所示:
var monitorInfo:Object = new Object();
使用对象文本或 Object 类构造函数创建数组后,可以使用数组访问 ([]) 运算符或点运算符 (.)。以下示例将两个新值添加到 monitorArray 中:
monitorInfo["aspect ratio"] = "16:10"; // bad form, do not use spaces
monitorInfo.colors = "16.7 million";
trace(monitorInfo["aspect ratio"], monitorInfo.colors);
// output: 16:10 16.7 million
请注意,名为 aspect ratio 的键包含空格字符。可以使用数组访问 ([]) 运算符,但是如果尝试使用点运算符,则会生成错误。不建议在键名称中使用空格。
创建关联数组的第二种方式是使用 Array 构造函数(或任何动态类的构造函数),然后使用数组访问 ([]) 运算符或点运算符 (.) 将键和值对添加到数组中。如果将关联数组声明为数组类型,则将无法使用对象文本初始化该数组。以下示例使用 Array 构造函数创建一个名为 monitorInfo 的关联数组,并添加一个名为 type 的键和一个名为 resolution 的键以及它们的值:
var monitorInfo:Array = new Array();
monitorInfo["type"] = "Flat Panel";
monitorInfo["resolution"] = "1600 x 1200";
trace(monitorInfo["type"], monitorInfo["resolution"]);
// output: Flat Panel 1600 x 1200
使用 Array 构造函数创建关联数组没有什么优势。即使使用 Array 构造函数或 Array 数据类型,也不能将 Array 类的 Array.length 属性或任何方法用于关联数组。最好将 Array 构造函数用于创建索引数组。