我有一个动态的Actionscript类,如下所示:
public dynamic class Foo {....}
在我的代码中我(可能)添加一些属性:
myFoo["myNewDynamicProp"] = "bar";
在我的代码中,给定一个类Foo的实例,如何确定是否已添加该动态属性而不抛出昂贵的异常?
答案 0 :(得分:7)
你可以做三件事之一。首先,调用dyanmic实例上不存在的属性不会引发异常。它只返回undefined
,因此您可以测试它。或者您可以使用in
关键字。或者您可以使用hasOwnProperty()
方法。
请考虑以下事项:
var myFoo:Foo = new Foo();
myFoo.newProp = "bar";
trace(myFoo.newProp != undefined); // true
trace(myFoo.nothing != undefined); // false
trace("newProp" in myFoo); // true
trace("nothing" in myFoo); // false
trace(myFoo.hasOwnProperty("newProp")); // true
trace(myFoo.hasOwnProperty("nothing")); // false
您也可以像第一个示例一样轻松使用括号表示法:myFoo['nothing']
答案 1 :(得分:2)
使用hasOwnProperty(属性名称)方法:
if (myFoo.hasOwnProperty("myNewDynamicProp")) {
// do whatever
}
答案 2 :(得分:2)
您还可以使用以下方法遍历任何动态类的属性:
for (var propertyName:String in myFoo)
{
trace("Property " + propertyName + ": " + myFoo[propertyName]);
if (propertyName == "myNewDynamicProp")
{
// found
// may be do something
}
}
通过这种方式,您不仅可以检查所需的属性,还可以使用整体(动态)类属性执行更多操作。
答案 3 :(得分:-1)
您应该能够像这样进行简单的空检查:
if(myFoo.myNewDynamicProp) {
//you can access it
}
希望有所帮助