在 ActionScript 中,如何测试一个对象是否被定义,也就是不是 null?
测试对象是否已定义
此方法适用于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);
}
如果你只想测试一个泛型的“无”,那么对于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)
即可获得最易读的版本。e = 0; if (e) trace(e);
- cHaovar a = undefined, b = null, c = 5, d;
- Cilantrace(5)
。但是这样做以及你的建议,都会违背这段代码的目的,即尽可能清晰地说明布尔强制转换的工作原理。 :) - bzlm只需将其与null进行测试即可。
var someObj:Object = getSomeObjectOrMaybeNull();
if(someObj == null) {
trace("someObj is null!");
} else {
trace("someObj is not null!");
}
你也可以循环遍历父对象,查看它是否包含你要查找的对象的任何实例。
foundit=false;
for (var i in this) {
if (this[i]._name == "MyMovie") {
foundit=true;
}
}