返回大旺国际登录网站

flash ActionScript中Array和Object的异同

时间:2012-06-07 22:26来源:大旺国际登录网站www.zhixing123.cn 编辑:麦田守望者

正在扩展shikar的ASPService,想把Flash的Array和Object都直接传给ASP,在ASP端,Flash的Array被转换成ASP的Array,而Object被转换成ASP的Dictionary。
在检测Flash的数据类型时发现,Object和Array的数据类型都是“object”。代码如下:


arr = [3,4,5];
obj ={a:3,b:4,c:5};
trace(arr);
trace(obj);
//返回 object
//返回 object

虽然这个问题早就知道,但一直没有深究。现在要区分Array和Object,就要进一步研究了。
再测试:

for (var i in arr){
trace(typeof(i));
trace(i)
}

返回的值居然是:
string
2
string
1
string
0
这说明数组的索引在ActionScript看来实际上不是数字,而是字符串!也就是说,下面这两句代码是等价的:

var t = arr[0];
var t = arr["0"];

为了证明我这个观点,继续测试


for (var i in obj){
trace(typeof(i));
trace(i)
}

返回:
string
a
string
b
string
c
它于Array所不同的好像就是for in循环返回的顺序,Array是从最大索引值开始递减,而Object则是递增。
这样看来,在ActionScript中,Array和Object都是作为Object类型看待的,他们的结构应该相同,都使用字符串作为索引(Array可以使用数字索引读取,但内部结构中,索引还是以字符串形式存储的)。
回到文章开头,要实现我需要的功能,发现Flash端无论是Array或者Object意义已经不大。我还是采用简单的方法:将Array和Object都转换成ASP端的二维数组,第一个是Object标识符,第二个是值。

------分隔线----------------------------
标签(Tag):FLASH FLASH实例教程 flash技巧 flash源代码 flash基础教程
------分隔线----------------------------
推荐内容
猜你感兴趣
XML 地图 | Sitemap 地图