有没有办法判断对象是类还是类的实例?这看起来是否正确:
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) + "]";
}
答案 0 :(得分:3)
首先,我认为这可能是使用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]
最简单的方法:
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>
更确切地说,我认为您可以使用flash.utils.describeType()
:
update MyTable set MyField = LEFT(MyField, 255):
ALTER TABLE MyTable ALTER COLUMN MyField TEXT(255);
希望可以提供帮助。
答案 1 :(得分:2)
if (object is Class)
确实会测试对象是否是一个类,但它也是一个Object,因为Class是Object的子类。
所以你的第二次测试是不必要的,因为任何非null都是一个Object。