对Array对象的错误认识[Action Script]

      今天想写一个计算24点的class,里面用到了Array,虽然在此之前用到过很多次,但是一些细节却没有在意过,所以今天调试时遇到的很多情况都出乎意料之外,在此写出。

1、new Array( )

之前用它只用过两种

var test_array:Array = new Array(inital_len); // 创建一个长度为inital_len的空数组

var test_array:Array = new Array(1, 2, 3); // 创建一个长度为3的数组,并且其元素为1,2,3

今天突发奇想,能不能用另一个数组创建新数组呢,比如下面的

var source_array:Array = new Array(1, 2, 3);

var test_array:Array = new Array(source_array);

我想要得到的效果是test_array跟source_array一样,都有包含“1、2、3”3个元素。trace了一下,的确输出了1、2、3,但是如果执行

trace(test_array.length);

output却是1。现在知道了吧,new Array只是把soure_array作为一个元素构造了test_array而已。

2、用一个数组给另一个数组赋值

既然不能用var test_array:Array = new Array(source_array);的方式由一个数组构造另一个数组,那么我用"="可以吧!比如:

这个效果如何呢,trace了test_array的长度和内容都是预料之中的,看来的确成功了。

然后是不是可以随便操作test_array呢。比如

var source_array:Array = new Array(1, 2, 3);

var test_array:Array = source_array;

test_array.splice(0, 1);

trace("source_array = " + source_array);

trace("test_array   = " + test_array);

你猜结果是什么?

source_array = 2, 3

test_array    = 2, 3

Why?

我只是想改变test_array的内容,为什么source_array也改变了?难道test_array和source_array指向同一块内存?用赋值操作符时是引用而不是拷贝?查看了一下帮助手册,还真是如此!

唉,以后真的要仔细看看说明才行!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值