AS3:检查变量是否为Object类型

Tap*_*nen 19 actionscript actionscript-3

我想在Actionscript 3中做类似的事情:

if(variable is Object) ...;
else ...;
Run Code Online (Sandbox Code Playgroud)

variable可能是String(),Number(),Array(),Object()...

目前,上述检查对所有这些类型都返回true,这是有道理的.但是,我只希望它为使用的对象返回true new Object().

任何帮助将非常感激!

Rob*_*Bak 35

你应该尝试使用这个功能 - getQualifiedClassNametypeof.下面是一个代码,显示了它们对您列出的不同数据类型的行为方式,特别是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));
Run Code Online (Sandbox Code Playgroud)

结果:

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
Run Code Online (Sandbox Code Playgroud)

我假设你正在寻找getQualifiedClassName,它位于flash utils包中:

import flash.utils.getQualifiedClassName;
Run Code Online (Sandbox Code Playgroud)


Chr*_*tow 5

尝试基于其中一个的东西:

if (variable.constructor.toString().match(/object/i) == 'Object')

if (variable.constructor.toString().indexOf("Object") != -1)
Run Code Online (Sandbox Code Playgroud)

如果对象是Object(),那么构造函数字符串就是这样的

function Object() { ... }
Run Code Online (Sandbox Code Playgroud)

所以你可以检查一下.