2008-11-17 19 views
27

में एक्शनस्क्रिप्ट में परिभाषित किया गया है, तो ऑब्जेक्ट को परिभाषित करने पर आप कैसे परीक्षण कर सकते हैं, यानी शून्य नहीं है?परीक्षण करें यदि किसी ऑब्जेक्ट को एक्शनस्क्रिप्ट

+1

क्या यह एएस 1, एएस 2 और एएस 3 में बिल्कुल वही काम करता है? – bzlm

उत्तर

35

परीक्षण एक वस्तु

इस AS2 और AS3 में काम करता है, और यदि एक वस्तु एक मूल्य है परीक्षण करने के लिए सबसे विश्वसनीय तरीका है परिभाषित किया गया है यदि।

if (obj != null) { 
    doSomethingWith(obj); 
} 

इसकी भी एक वस्तु की संपत्ति का परीक्षण करने और एक ही अभिव्यक्ति में इसे पढ़ने के लिए सबसे विश्वसनीय तरीका:

if (arr[0] != null && arr[0]>5) { 
    doSomethingWith(arr[0]); 
} 

परीक्षण करता है, तो एक वस्तु अशक्त

नहीं है है शून्य और अपरिभाषित के बीच एक अंतर, लेकिन यदि आपको परवाह नहीं है तो आप किसी एक के बीच सामान्य तुलना कर सकते हैं क्योंकि वे कॉम बराबर धीरे-धीरे कम:

if (obj == null) { 
    doSomethingWith(obj); 
} 

रूप

if (obj == undefined) { 
    doSomethingWith(obj); 
} 

ही है आप अंतर के बारे में परवाह है, तो === या == ऑपरेटर है, जो उन्हें रूपांतरित नहीं करेंगे का उपयोग करें!।

if (obj === undefined) { 
    // obj was never assigned a value 
} 
else if (obj === null) { 
    // obj was explicitly set to null 
} 
else { 
    doSomethingWith(obj); 
} 
+1

आप सभी का मतलब है अगर (obj == null || obj == अपरिभाषित) मेरे कोडबेस में कथन को संघनित किया जा सकता है? लुभाने! :) – Herms

+0

क्या आप वहां "if (obj)" फेंक सकते हैं? बूलियन जबरन कैसे काम करता है? – bzlm

+0

यह संभवतः मृत है लेकिन इस पृष्ठ पर एक्शनस्क्रिप्ट चेसिंग नल के लिए गुगल हो गया है। मेरे पास एक एमएक्स है: एचटीएमएल नियंत्रण और htmlDOM पर प्रारंभ करें मैं इस तरह दस्तावेज़ लेता हूं: डॉक्टर: ऑब्जेक्ट = myMxHTML.domWindow.document; फिर doc.head == शून्य शून्य पर मूल्यांकन करता है भले ही ट्रेस (doc.head) शून्य दिखाता है। दस्तावेज़ शून्य नहीं है, जैसा प्रलेखन में यह नहीं हो सकता है। – HMR

3

बस इसे शून्य के खिलाफ परीक्षण करें।

var someObj:Object = getSomeObjectOrMaybeNull(); 
if(someObj == null) { 
    trace("someObj is null!"); 
} else { 
    trace("someObj is not null!"); 
} 
-2

तुम भी एक माता पिता वस्तु के माध्यम से पाश को देखने के लिए कर सकता है अगर यह वस्तु आप देख रहे हैं के किसी भी उदाहरण हों।

foundit=false; 
for (var i in this) { 
    if (this[i]._name == "MyMovie") { 
     foundit=true; 
    } 
} 
+0

यह पता लगाने के लिए कि क्या कुछ ऑब्जेक्ट शून्य है –

8

ActionScript 3.0 के लिए, यदि आप सभी चाहते हैं शून्य के लिए एक सामान्य परीक्षण है, तो यह बहुत आसान है:

var a; 
var b; 
var c; 
var d; 
a = undefined; 
b = null; 
c = 5; 
if (a) 
    trace(a); 
if (b) 
    trace(b); 
if (c) // Will trace 
    trace(c); 
if (d) 
    trace(d); 

उपरोक्त उदाहरण में, केवल c का पता लगाने जाएगा। यह आमतौर पर मुझे चाहिए, और केवल if (obj) जांचना सबसे पठनीय संस्करण है।

इस विधि एक बूलियन मान, भी बूलियन बलात्कार रूप में जाना जाता करने के लिए अंतर्निहित रूपांतरण, और क्या मूल्यों गलत पर मजबूर और क्या मूल्यों सच follow ECMA standards को विवश होगा और भी कर रहे हैं documented specifically for ActionScript की जानकारी दिए उपयोग करता है।

+0

मैंने सोचा कि मैं कोशिश करूँगा, लेकिन यह वास्तव में काम करता है, और मुझे लगता है कि यह भी अच्छा दिखता है। –

+0

मुझे यह भी पसंद है, यह कोड को और अधिक पठनीय बनाता है और रीफैक्टरिंग को आसान बनाता है। – bzlm

+0

अच्छा बिंदु। स्वीकृत उत्तर में शामिल है। धन्यवाद। –

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