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

本文探讨了在Flash编程中,Array与Object的动态属性与元素索引使用方式的区别,解释了为何在创建哈希表时推荐使用Object,并分析了Array的额外属性和方法如何影响内存开销。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

通过学习官方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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值