28

在 ActionScript 中,如何测试对象是否已定义,即不为空?

4

4 回答 4

35

测试是否定义了对象

这适用于 AS2 和 AS3,并且是测试对象是否具有值的最可靠方法。

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

它也是测试对象属性并以相同表达式读取它的最可靠方法:

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

测试一个对象是否为空

null 和 undefined 之间是有区别的,但是如果您不在乎,您可以在两者之间进行正常比较,因为它们比较相等:

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);
}
于 2008-11-17T21:06:55.023 回答
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)是最易读的版本。

此方法使用隐式转换为布尔值,也称为boolean coercion,哪些值将强制为 false 以及哪些值将强制为 true 的详细信息遵循 ECMA 标准,并且还专门针对 ActionScript 进行了记录

于 2009-02-22T11:51:13.200 回答
3

只需针对 null 测试它。

var someObj:Object = getSomeObjectOrMaybeNull();
if(someObj == null) {
  trace("someObj is null!");
} else {
  trace("someObj is not null!");
}
于 2008-11-17T20:50:05.103 回答
-2

您还可以遍历父对象以查看它是否包含您要查找的对象的任何实例。

foundit=false;
for (var i in this) {
    if (this[i]._name == "MyMovie") {
         foundit=true;
    }
}
于 2009-01-04T10:01:10.463 回答