码迷,mamicode.com
首页 > 其他好文 > 详细

AS3的Array,Object ,Dictionary的对比

时间:2015-01-25 15:11:13      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:

Object、Array与Dictionary都是关联数组,就是用“键”来索引存储“值”,是“键——值”对的无序集合。

 

1.Object
当把Object用作关联数组时,是通用对象的每个属性名称当作键,提供对存储的值的访问,示例如下:
[plain] view plaincopy

    var obj : Object = {key1:"value1", key2:"value2"};  
    trace(obj["key1"], obj["key2"]);  // 输出:value1 value2  

也可以使用括号运算符 ([]) 或点运算符 (.) ——也就是动态属性在数组中添加值:
[plain] view plaincopy

    var obj : Object = new Object();  
    obj["key1"] = "value1"; // 格式错误,请勿使用空格  
    obj.key2= "value2";  
    trace(obj["key1"], obj.key2);  // 输出:value1 value2  

但是如果键里面有空格注意,空格字符可以与括号运算符一起使用,但试图与点运算符一起使用时会生成错误,所以不建议在键名称中使用空格。

 

2.Array
Array无法使用文本初始化该数组,也无法通过属性添加元素,它的例子如下:
[plain] view plaincopy

    var arr : Array = new Array();  
    arr["key1"] = "value1";  
    arr["key2"] = "value2";  
    trace(arr["key1"], arr["key2"]); // 输出:value1 value2  

使用 Array 构造函数创建关联数组没有什么优势,而且Array的键必须是字符串类型,最好不要用Array做关联数组。

 

3.Dictionary
Dictionary是具有对象键的关联数组,即可以使用对象而非字符串作为键的关联数组,示例代码:
[plain] view plaincopy

    var groupMap:Dictionary = new Dictionary();  
    // 要用作键的对象  
    var spr1:Sprite = new Sprite();  
    var spr2:Sprite = new Sprite();  
    var spr3:Sprite = new Sprite();  
    // 要用作值的对象  
    var groupA:Object = new Object();  
    var groupB:Object = new Object();  
    // 在字典中创建新的键-值对。  
    groupMap[spr1] = groupA;  
    groupMap[spr2] = groupB;  
    groupMap[spr3] = groupB;  

可以使用 for..in 循环或 for each..in 来循环访问 Dictionary 对象的内容,他们的区别在于, for..in 循环直接访问 Dictionary 对象的对象键,而 for each..in 访问的是值。还可以使用属性访问运算符 ([]) 访问 Dictionary 对象的值:
[plain] view plaincopy

    for (var key:Object in groupMap)  
    {  
    trace(key, groupMap[key]);  
    }  
    /* 输出:  
    [object Sprite] [object Object]  
    [object Sprite] [object Object]  
    [object Sprite] [object Object]  
    */  
    for each (var item:Object in groupMap)  
    {  
        trace(item);  
    }  
    /* 输出:  
    [object Object]  
    [object Object]  
    [object Object]  
    */  

删除Dictionary的方法是:
[plain] view plaincopy

    delete dic[key];  
    //如果key是对象,记得释放对它的引用  
    key = null;  

 

AS3的Array,Object ,Dictionary的对比

标签:

原文地址:http://www.cnblogs.com/duhuo/p/4248155.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!