我想在Actionscript 3中做这样的事情:
if(variable is Object) ...;
else ...;
variable
可以是String()
,Number()
,Array()
,Object()
......
目前,上述检查对所有这些类型都返回true,这是有道理的。我只希望它为使用new Object()
制作的对象返回true。
非常感谢任何帮助!
答案 0 :(得分:35)
您应该尝试使用此功能 - getQualifiedClassName
和typeof
。下面是一个代码,显示了它们对您列出的不同数据类型的行为方式,特别是数组和数字的区别:
<强>代码:强>
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;
答案 1 :(得分:5)
尝试基于以下其中一项的内容:
if (variable.constructor.toString().match(/object/i) == 'Object')
if (variable.constructor.toString().indexOf("Object") != -1)
如果对象是Object(),则构造函数字符串将类似于
function Object() { ... }
所以你可以检查一下。
答案 2 :(得分:3)
您还可以使用getQualifiedSuperclassName
为null
类型返回Object
,因为它没有超类:
public static function isObject( obj:* ):Boolean
{
if ( obj == null )
return false;
return ( getQualifiedSuperclassName( obj ) == null );
}
答案 3 :(得分:-1)
你去,试试这个......
var ob:Object = new Object();
trace(ob); //[object Object]
trace(typeof(ob) == "object"); //true
if(typeof(ob) == "object"){
//true
}else{
//false
}