昨天群里一个兄弟遇到这个情况:
用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
技术内容转载请注明来源,个人日记不允许转载,欢迎指出任何有错误或不够清晰的表达。可以邮件至 mousebomb@gmail.com