:::: 菜单 ::::

Array.push(Object)后数组里只保留最后一项

昨天群里一个兄弟遇到这个情况:

用Array.push(Object)后发现数组里面只保留着N个最后一项的内容是怎么回事啊?
例如:
我想把
1 电脑报官方网站—中国电脑爱好者互动门户
2 虚拟主机 企业邮局 服务器租用 服
3 无法正常访问网站请联系我公司
但是当push到3的时候
Array里的内容是:
3 无法正常访问网站请联系我公司
3 无法正常访问网站请联系我公司
3 无法正常访问网站请联系我公司

解决方法:每次都new一个Object来push
前车之鉴后车之戒,这个状况是很好的借鉴,注意:由于AS3中除了基元数据类型(Boolean、int、Number、String、uint)之外都是引用类型,Object、Array都是引用类型。所以在3次循环中push过Object后,数组中保存的是对Object的引用,而三次给Object的内容赋值,这样改变的其实是数组中的该Object内存地址内容,所以循环赋值结束,Object一直是指向同一个内存地址的内容,而它最终内容是“无法正常访问网站请联系我公司”。
因此,我们需要三个指向不同内存地址的Object来push,所以每次push的Object应该是独自被new出来的。

参考资料:《FLASH ACTIONSCRIPT3殿堂之路》第二章

我曾经做的笔记:http://www.flashj.cn/pjblog/article.asp?id=194

延伸阅读