是否有官方的 AS3 API 或 class 来检查对象是否没有属性?

Is there an official AS3 API or class to check if an object has no properties?

是否有 AS3 API、Flex class 或我在下面列出的方法以外的方法来测试对象是否为空?

这不适用于 Flex 应用程序:

var o:Object = {};
var result:Boolean = isEmpty(o); // true
var result2:Boolean = isEmpty(FlexGlobals.topLevelApplication); // true

function isEmpty(object) {
   for(var i in object) { return false; } 
   return true;
}

更新: 我想问一下 Flash 或 Flex AS3 中是否有方法 API 因为它在应用程序上不起作用 class .我正在寻找像 ObjectUtil 这样的 classes,因为有些东西像原型链和像应用程序这样的对象 class 在执行简单的属性循环时不显示属性。请删除关闭标志,以便人们可以回答。

它 returns trueApplication class 的原因是因为它没有任何可枚举的属性。 for..infor..each 命令不会遍历对象的每个 属性,只会遍历那些可枚举的对象,通常只是动态属性,如数组值和对象键(但这可以是通过代理重载更改)。

除了依赖对对象的一般 "isEmpty" 检查之外,几乎肯定有更好的方法来做任何您想做的事情,但您可以使用 describeType 来查看是否类型上定义了任何属性。您可能想要检查 accessorvariable 节点。

您还可以通过检查构造函数来确保您正在处理的对象是 Object 的子 class 而不仅仅是 ObjectmyObject.constructor != Object

不能说这是否有帮助,但还有另一种获取对象属性的方法:

import flash.utils.describeType;
trace(describeType(class));

参数是一个Class实例或一个Class定义,它returns一个带有详细描述的XML,但你需要解析它才能得到任何东西有意义。此外,它将仅显示 class 的 public 属性。更新 - 哦,刚刚看到以前的答案已经描述了这一点。