2008-11-17 636 views
27

'da tanımlandığını test edin ActionScript'te, bir nesnenin tanımlanıp tanımlanmadığını nasıl sınayabilirsiniz, yani null değil?Bir nesnenin ActionScript

+1

Bu, AS1, AS2 ve AS3'te aynı şekilde çalışır mı? – bzlm

cevap

35

testi bir amacı

Bu AS2 ve AS3 çalışır ve bir amacı, bir değere sahiptir test etmek için en güvenilir yolu tanımlanırsa. Ayrıca

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

Onun bir nesnenin özelliğini test etmek ve aynı ifadede okumak için en güvenilir yolu:

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

testi bir nesne

var null ise null ile undefined arasındaki fark, ama eğer umursamıyorsanız, ikisi arasında normal bir karşılaştırma yapabilirsiniz. Onları dönüştürmek olmaz === veya == operatörü, sen fark önem veriyorsanız

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

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

aynıdır kullanın:! eşit pare.

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

Tüm bunlar (cis == null || obj == undefined) kod grubumdaki deyimler yoğunlaştırılabilir mi? woo! :) – Herms

+0

Oraya "eğer (obj)" diyebilir misin? Boole baskısı nasıl çalışır? – bzlm

+0

Bu muhtemelen öldü ancak actionscript checing null için bu sayfaya gitmeliyim. Bir mx: html denetimim var ve htmlDOMInitialize üzerinde şu şekilde belge alıyorum: doc: Object = myMxHTML.domWindow.document; Ardından, doc.head == null, trace (doc.head) null değerini gösterse bile false değerini değerlendirir. Dokümantasyonda olduğu gibi doküman null değildir. – HMR

3

Sadece null değerini sınayın.

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

Ayrıca, aradığınız nesnenin örneklerini içerip içermediğini görmek için bir üst nesneye de geçebilirsiniz. İstediğin hiçlik için genel bir testtir eğer ActionScript 3.0 için

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

Bu, sadece bazı nesnelerin boş olup olmadığını öğrenmek için döngü yapmak için çok kötü bir uygulamadır –

8

, o zaman çok kolay:

Yukarıdaki örnekte
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); 

, sadece c yazacaktır. Bu genellikle ihtiyacım olan şeydir ve sadece en okunabilir sürüm olan if (obj) kontrol edilir.

Bu yöntem örtülü de boole baskı olarak bilinen bir mantıksal değere dönüşüm ve değerler false zorlamak ve hangi değerleri doğru follow ECMA standards için zorlamak ve documented specifically for ActionScript de ne ayrıntılarını kullanır.

+0

Bunu denediğimi düşündüm, ama bu gerçekten işe yarıyor ve bence çok güzel görünüyor. –

+0

Ben de hoşuma gidiyor, kodu daha okunabilir hale getiriyor ve yeniden oluşturmayı kolaylaştırıyor. – bzlm

+0

İyi nokta. Kabul edilen cevaba dahil. Teşekkürler. –