有没有办法判断一个对象是 class 还是一个对象?

Is there a way to tell if an object is a class or an object?

有没有办法判断一个对象是 class 还是 class 的实例?这看起来正确吗:

if (object is Class) {
    return "[class " + getQualifiedClassName(value) + "]";
}
else if (object is Object) {
    return "[object " + getQualifiedClassName(value) + "]";
}

这似乎不能涵盖所有情况。

更新
这是我正在使用的函数:

    /**
     * Get string value of an object if value is not simple. For primitives the value is not changed. 
     * For class objects, "[class ClassName]" is returned. 
     * For objects, "[object ClassName]" is returned.
     * */
    public static function getStringValue(value:*):* {
        if (ObjectUtil.isSimple(value)) {
            return value;
        }
        else if (value is Class) {
            return "[class " + getQualifiedClassName(value) + "]";
        }

        return "[object " + getQualifiedClassName(value) + "]";
    }

if (object is Class) 确实会测试对象是否是 class,但它也是一个对象,因为 Class 是对象的子class。 所以你的第二个测试是不必要的,因为任何不为 null 的东西都是一个对象。

首先,我认为最简单的方法可能是使用 String() :

var o:MyClass = new MyClass();
var m:MovieClip = new MovieClip();

trace(String(MyClass));     // gives : [class MyClass]
trace(String(o));           // gives : [object MyClass]

trace(String(MovieClip));   // gives : [class MovieClip]
trace(String(m));           // gives : [object MovieClip]

更确定的是,我认为您可以使用 flash.utils.describeType() :

trace(describeType(o));

// gives : 
//  <type name="MyClass" base="Object" isDynamic="false" isFinal="false" isStatic="false">
//      <extendsClass type="Object"/>
//  </type> 

trace(describeType(MyClass));

// gives : 
//  <type name="MyClass" base="Class" isDynamic="true" isFinal="true" isStatic="true">
//      <extendsClass type="Class"/>
//      <extendsClass type="Object"/>
//      <accessor name="prototype" access="readonly" type="*" declaredBy="Class"/>
//      <factory type="MyClass">
//          <extendsClass type="Object"/>
//      </factory>
//  </type>

希望能帮到你。