我想在Actionscript 3中做类似的事情:
if(variable is Object) ...; else ...;
凡variable
可能是String()
,Number()
,Array()
,Object()
...
目前,上述检查对所有这些类型都返回true,这是有道理的.但是,我只希望它为使用的对象返回true new Object()
.
任何帮助将非常感激!
你应该尝试使用这个功能 - getQualifiedClassName
和typeof
.下面是一个代码,显示了它们对您列出的不同数据类型的行为方式,特别是Array和Numbers的区别:
码:
var o = new Array(); trace ("var o = new Array()"); trace (getQualifiedClassName(o)); trace (typeof(o)); var o = new Object(); trace ("var o = new Object();"); trace (getQualifiedClassName(o)); trace (typeof(o)); var o = new String(); trace ("var o = new String()"); trace (getQualifiedClassName(o)); trace (typeof(o)); var o = new Number() trace ("var o = new Number()"); trace (getQualifiedClassName(o)); trace (typeof(o)); var o = 3.14; trace ("var o = 3.14"); trace (getQualifiedClassName(o)); trace (typeof(o));
结果:
var o = new Array() Array object var o = new Object(); Object object var o = new String() String string var o = new Number() int number var o = 3.14 Number number
我假设你正在寻找getQualifiedClassName,它位于flash utils包中:
import flash.utils.getQualifiedClassName;
尝试基于其中一个的东西:
if (variable.constructor.toString().match(/object/i) == 'Object') if (variable.constructor.toString().indexOf("Object") != -1)
如果对象是Object(),那么构造函数字符串就是这样的
function Object() { ... }
所以你可以检查一下.