2009-12-11 156 views
18

我想要做這樣的事情在ActionScript 3的:AS3:檢查是否一個變量是Object類型

if(variable is Object) ...; 
else ...; 

variable可能是一個String(),​​,Array()Object() ...

目前上述檢查對所有這些類型都返回true,這是有道理的。但是,我只希望它能夠用new Object()返回true。

任何幫助將不勝感激!基於這些圍繞一個

回答

34

您應該嘗試使用此功能 - getQualifiedClassNametypeof。這裏是展示他們的言行舉止爲您列出不同的數據類型代碼,請參閱陣列和數字特別的區別:

代碼:

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; 
+0

是的,其實我在不久之後發現了關於getQualifiedClassName的事情,而且這確實是我正在尋找的。謝謝回覆! – 2009-12-12 11:49:23

5

試試:

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

if (variable.constructor.toString().indexOf("Object") != -1) 

如果對象是一個Object()構造函數字符串會像

function Object() { ... } 

,所以你可以檢查這一點。

3

您還可以使用getQualifiedSuperclassName這爲Object類型返回null,因爲它沒有一個超類:

public static function isObject(obj:*):Boolean 
{ 
    if (obj == null) 
     return false; 
    return (getQualifiedSuperclassName(obj) == null); 
} 
-1

在這裏你去,試試這個..

var ob:Object = new Object(); 

trace(ob); //[object Object] 
trace(typeof(ob) == "object"); //true 

if(typeof(ob) == "object"){ 
    //true 
}else{ 
    //false 
} 
相關問題