Проверьте, определен ли объект в ActionScript - PullRequest
28 голосов
/ 17 ноября 2008

Как в ActionScript проверить, определен ли объект, т. Е. Не равен нулю?

Ответы [ 4 ]

35 голосов
/ 18 ноября 2008

проверка, определен ли объект

Это работает в 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);
}
8 голосов
/ 22 февраля 2009

Для 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) является наиболее читаемой версией.

Этот метод использует неявное преобразование в логическое значение, также известное как логическое приведение , и сведения о том, какие значения приведут к ложному, а какие приведут к истинному соответствуют стандартам ECMA а также документированы специально для ActionScript .

3 голосов
/ 17 ноября 2008

Просто проверьте его на ноль.

var someObj:Object = getSomeObjectOrMaybeNull();
if(someObj == null) {
  trace("someObj is null!");
} else {
  trace("someObj is not null!");
}
0 голосов
/ 04 января 2009

Вы также можете перебрать родительский объект, чтобы увидеть, содержит ли он какие-либо экземпляры искомого объекта.

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