如何判断Actionscript对象是否具有某个动态属性?

HDa*_*ave 3 apache-flex dynamic actionscript-3

我有一个动态的Actionscript类,如下所示:

public dynamic class Foo {....}
Run Code Online (Sandbox Code Playgroud)

在我的代码中我(可能)添加一些属性:

myFoo["myNewDynamicProp"] = "bar";
Run Code Online (Sandbox Code Playgroud)

在我的代码的其他地方,给定一个类Foo的实例,如何确定是否已添加该动态属性而不抛出昂贵的异常?

J. *_*mes 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
Run Code Online (Sandbox Code Playgroud)

您也可以像第一个示例一样轻松使用括号表示法: myFoo['nothing']