我想在Actionscript 3中做类似于这样的事情:
if(variable is Object) ...;
else ...;
变量variable
可以是String()
、Number()
、Array()
、Object()
等。
目前上述检查对所有这些类型都返回true,这是合理的。但我只想让它对使用new Object()
创建的对象返回true。
非常感谢任何帮助!
我想在Actionscript 3中做类似于这样的事情:
if(variable is Object) ...;
else ...;
变量variable
可以是String()
、Number()
、Array()
、Object()
等。
目前上述检查对所有这些类型都返回true,这是合理的。但我只想让它对使用new Object()
创建的对象返回true。
非常感谢任何帮助!
你应该尝试使用这些函数 - 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;
尝试基于以下内容之一:
if (variable.constructor.toString().match(/object/i) == 'Object')
if (variable.constructor.toString().indexOf("Object") != -1)
function Object() { ... }
所以你可以检查它。
您还可以使用getQualifiedSuperclassName
,对于Object
类型,它会返回null
,因为它没有超类:
public static function isObject( obj:* ):Boolean
{
if ( obj == null )
return false;
return ( getQualifiedSuperclassName( obj ) == null );
}
给你,试试这个...
var ob:Object = new Object();
trace(ob); //[object Object]
trace(typeof(ob) == "object"); //true
if(typeof(ob) == "object"){
//true
}else{
//false
}