Test if an object is defined in ActionScript

2019-03-17 06:16发布

In ActionScript, how can you test if an object is defined, that is, not null?

4条回答
萌系小妹纸
2楼-- · 2019-03-17 06:47

Just test it against null.

var someObj:Object = getSomeObjectOrMaybeNull();
if(someObj == null) {
  trace("someObj is null!");
} else {
  trace("someObj is not null!");
}
查看更多
家丑人穷心不美
3楼-- · 2019-03-17 07:01

For ActionScript 3.0, if all you want is a generic test for nothingness, then it's very easy:

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);

In the example above, only c will trace. This is usually what I need, and just checking if (obj) is the most readable version.

This method uses implicit conversion to a boolean value, also known as boolean coercion, and the details of what values will coerce to false and what values will coerce to true follow ECMA standards and are also documented specifically for ActionScript.

查看更多
男人必须洒脱
4楼-- · 2019-03-17 07:05

test if an object is defined

This works in AS2 and AS3, and is the most reliable way to test if an object has a value.

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

Its also the most reliable way to test an object's property and read it in the same expression:

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

test if an object is null

There's a difference between null and undefined, but if you don't care you can just do a normal comparison between either one because they compare equal:

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

is the same as

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

If you care about the difference, use the === or !== operator, which won't convert them.

if (obj === undefined) {
    // obj was never assigned a value
}
else if (obj === null) {
    // obj was explicitly set to null
}
else {
    doSomethingWith(obj);
}
查看更多
Summer. ? 凉城
5楼-- · 2019-03-17 07:06

You could also loop through a parent object to see if it contains any instances of the object you're looking for.

foundit=false;
for (var i in this) {
    if (this[i]._name == "MyMovie") {
         foundit=true;
    }
}
查看更多
登录 后发表回答