写了这么一段as3的代码,用到了E4X,Firebug是自己写的一个用来调用Firebug的console的调试类:

var x:XML = evt.message as XML;
Firebug.info(x.toString()); // 正常输出XML内容
Firebug.info(x is XML);     // true
Firebug.info(x.@status);    // 没有输出,但的确是有这个属性的

莫名奇妙,不知道啥原因,翻了手册,也Google了,还是不知道啥原因。于是想想这样一试:

var x:XML = evt.message as XML;
var status:String = x.@status;
Firebug.info(x.toString()); // 正常输出XML内容
Firebug.info(x is XML);     // true
Firebug.info(status);       // 成功输出status属性的值“success”

真让人崩溃!为什么一开始的写法就不能输出呢?不懂,有明白的人指点下吧,谢谢!

2 Comments

  1. Firebug.info(x.@status);
    把x.@status转换为String就可以,因为@status是Object,貌似不会自动调用默认的toString()方法,所以要手工转换为String才有输出。
    Firebug.info(String(x.@status));

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.