2009-12-11 11 views
18

मैं Actionscript 3 में कुछ इस तरह से करना चाहता हूँ की है:AS3: जांच की जा रही है, तो एक चर ऑब्जेक्ट प्रकार

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

variable जहां एक String(), Number(), Array(), Object() ...

हो सकता है

वर्तमान में उपर्युक्त चेक इन सभी प्रकारों के लिए सत्य लौटाता है, जो समझ में आता है। मैं केवल new Object() के साथ बनाई गई वस्तुओं के लिए इसे वापस करना चाहता हूं।

किसी भी मदद की बहुत सराहना की जाएगी!

उत्तर

34

आपको इन कार्यों का उपयोग करने की कोशिश करनी चाहिए - 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 आप जो खोज रहे हैं वह फ़्लैश यूटिल पैकेज में होगा:

import flash.utils.getQualifiedClassName; 
+0

हाँ मैं getQualifiedClassName के बारे में जल्द ही पता चला, और यह वही है जो मैं खोज रहा था। उत्तर के लिए धन्यवाद! –

5

कोशिश कुछ इनमें से किसी एक के आसपास आधारित: वस्तु एक वस्तु है

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

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

हैं() निर्माता स्ट्रिंग कुछ

तरह
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 
} 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^