Array的秘密

来源:互联网 发布:知和行书局 编辑:程序博客网 时间:2024/05/23 02:01

昨天在调试YouYeeTree类的时候总是发现子项显示的数目不对,当时就很郁闷,为什么我的数据声明正确但是显示出来的数目总是不对呢?
一下是数据声明代码:

var my_array:Array=new Array();
my_array[0]=new Object();
my_array[1]=new Object();
trace(Array(my_array).length)
//output 1

明明是两个子数据,为何返回my_array的长度是1?应该是2才对啊?!
心里郁闷了一阵再来试验:

var my_array:Array=new Array();
my_array[0]=new Object();
my_array[1]=new Object();
trace(my_array.length);
//output 2

这下又正常了,难道是Array转换反而使得其变质了?
怪小生不才一直没有想明白其中的缘由,继续查阅文档:
var obj:Object = [ "a", "b", "c" ];
var newArray:Array = Array( obj );
trace(newArray == obj);    // false
trace(newArray[0] == obj); // true
trace(newArray[0][0])      // a
trace(newArray[0][1])      // b
trace(newArray[0][2])      // c

这个是帮助文档里面的例子,算是找到缘由了,再进行刚才的试验:
var my_array:Array=new Array();
my_array[0]=new Object();
my_array[1]=new Object();
trace(Array(my_array)[0].length);
//output 2

现在终于明白这是为什么了,当使用Array()的时候,其会自动创建一个新的数组,然后把Array()内的参数变成其第一个子项。

看来以后使用Array的时候就一定要留心了,这和其他类的强制转换函数很不一样。

原创粉丝点击