Actionscript3中对象属性名称的一些问题

时间:2010-04-12 05:54:14

标签: actionscript-3

A.as

package
{
    public class A
    {
        public static var someObject:Object = {
            (B.SOME_CONST): { value: 10 }
        };
    }
}

B.as

package
{
    public class B
    {
        public static const SOME_CONST:String = "someStringConst";
    }
}

这是测试代码。

var obj:Object = A.someObject;
trace(obj.hasOwnProperty(B.SOME_CONST));
trace(obj.hasOwnProperty("someStringConst"));
trace(obj.hasOwnProperty("SOME_CONST"));

我预计结果将为true,true,false但实际结果为false,false,true。 为什么呢?

1 个答案:

答案 0 :(得分:0)

出于某种原因,将行更改为(B["SOME_CONST"]): {value:10}有效,尽管括号仍然需要在那里。我无法找到原因,为什么会出现这种情况。这绝对是一个错误。

起初我认为这是一个问题,解析器在点或其他东西上绊倒,但经过一些更多的测试似乎并非如此:

package
{
    public class A
    {
        public var someObject:Object = {
            (C.b["SOME_CONST"]): { value: 10 }
        };
    }
}
package {
    public class B
    {
        public static const SOME_CONST:String = "someStringConst";
    }
}
package {
    public class C
    {
        public static var b:Class = B;
    }
}

如果解析器出现问题,它将解析为b["SOME_CONST"],从而解析为运行时异常。但是,代码按预期工作没有问题。

所以这真的很有趣。