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。 为什么呢?
答案 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"]
,从而解析为运行时异常。但是,代码按预期工作没有问题。
所以这真的很有趣。