我想要做這樣的事情在ActionScript 3的:AS3:檢查是否一個變量是Object類型
if(variable is Object) ...;
else ...;
凡variable
可能是一個String()
,,Array()
,Object()
...
目前上述檢查對所有這些類型都返回true,這是有道理的。但是,我只希望它能夠用new Object()
返回true。
任何幫助將不勝感激!基於這些圍繞一個
我想要做這樣的事情在ActionScript 3的:AS3:檢查是否一個變量是Object類型
if(variable is Object) ...;
else ...;
凡variable
可能是一個String()
,,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將是你正在尋找,這是在閃存utils包:
import flash.utils.getQualifiedClassName;
試試:
if (variable.constructor.toString().match(/object/i) == 'Object')
if (variable.constructor.toString().indexOf("Object") != -1)
如果對象是一個Object()構造函數字符串會像
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
}
是的,其實我在不久之後發現了關於getQualifiedClassName的事情,而且這確實是我正在尋找的。謝謝回覆! – 2009-12-12 11:49:23