テストやデバッグのために知っておきたいTitaniumのオブジェクトの特徴

それは

JavaScript側のオブジェクトはネイティブのオブジェクトの情報を全て持っているわけではない。

ということ。
以下のようにメソッド呼び出しをトリガーに必要に応じてとってくるかんじのようだ。

view = Ti.UI.createView();
Ti.API.debug(view.visible);
// #=> <null>

view.show();
Ti.API.debug(view.visible);
// #=> true

view.hide();
Ti.API.debug(view.visible);
// #=> false

この挙動はパフォーマンスも考えるとやむをえないのだろうか。
ともあれこういう事情のおかげでオブジェクトのダンプもままならないのでデバッグが少々やり難くなっている。

また自然な期待に反する挙動なので、知らないとバグなのかと戸惑う。
そしてどう考えても通るはずのテストが通らず首をかしげたりする羽目になる。

2011/02/23追記

あれ、プロトタイプチェーンのせいなのかな。
って思ったけどfor inでプロパティ一覧が取得できないので、やっぱ何かメタプログラミング的なことが行われてる気がする。