オブジェクトがActionScriptで定義されているかどうかをテストします
-
08-07-2019 - |
質問
ActionScriptでは、オブジェクトが定義されているか、つまりnullではないかをどのようにテストできますか?
解決
オブジェクトが定義されているかどうかをテスト
これはAS2およびAS3で機能し、オブジェクトに値があるかどうかをテストする最も信頼できる方法です。
if (obj != null) {
doSomethingWith(obj);
}
これは、オブジェクトのプロパティをテストし、同じ式で読み取るための最も信頼できる方法でもあります:
if (arr[0] != null && arr[0]>5) {
doSomethingWith(arr[0]);
}
オブジェクトがnullかどうかをテストする
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)
をチェックするだけが最も読みやすいバージョンです。
このメソッドは、ブール値への暗黙的な変換( boolean coercion とも呼ばれます)、およびどの値がfalseに強制され、どの値がtrueに強制されるかの詳細 ECMA標準に従って、また
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;
}
}