为什么不能(不建议)使用Array创建关联数组(哈希表)

 

通过学习官方API和cookbook,我总结了如下原因:

1.从API中我们了解到,Array和Object都是动态类,也就是我们可以给他们动态添加属性。

var obj:Object = new Object();
obj.prop1 = "value1";
obj.prop2 = "value2";

//例子1
var array:Array = new Array();
array.prop1 = "value1";
array.prop2 = "value2";

  但是我们再看一个数组的例子:

//例子2
var array:Array = new Array();
array[0] = "value1";
array[1] = "value2";

 这个例子和上面的那个有什么不同?array的这两种使用方法在本质上是绝对不同的。例1使用的是array对象的属性来存储值(obj亦是),而例2使用的是array的元素来存储值。也就是说,array既有obj的动态属性的特性,又有自身的元素索引的特性,所以杀鸡焉用牛刀?同时又因为array比object多出很多封装的属性和方法,flash 虚拟机创建一个Array的开销大于创建一个Object的开销。而且这些属性和方法大多不能用于操作关联数组,既然用Object就可以实现关联数组,那又何必再去使用Array呢?

 

2.根据哈希表(散列表)的定义,哈希表中的元素是无序的(不然怎么叫做“散列”表呢 ^_^),而Array中的元素是有序的,特别适合创建索引数组。因此创建哈希表的最佳方法是采用Object.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值