メンバの有無の確認方法

TJS2で、Dictionaryクラスのオブジェクト(辞書配列)にメンバが存在するかどうかは
var dic = %[];
if(dic.hoge === void) {
System.inform("無いよっ");
}
このようにvoidとの比較で出来ますが、これと同じ事を他のオブジェクトでやると例外が出ます。
var obj = new Date();
if(obj.hoge === void) { //この行で例外が発生する。
System.inform("無いってば!");
}
じゃあ辞書配列以外のオブジェクトでメンバの有無はどうやって確認するんだという話ですが、typeof演算子を使います。
var obj = new Date();
if(typeof obj.hoge == "undefined") { //これならOK。
System.inform("無いってば!");
}
この仕様は結構はまりやすそう(というかはまった)なので、気を付けましょう。
typeof演算子による比較は辞書配列でも使えますので、はまりそうだなという人は、比較の際は必ずtypeof演算子を使う、という風に決めておいた方がいいかも。
というお話。



