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

2011-02-20
2011-02-23
かなり古い記事です。現在も有効な内容であるかどうか分かりませんのでご注意ください。

それは

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でプロパティ一覧が取得できないので、やっぱ何かメタプログラミング的なことが行われてる気がする。

Profile

フルスタック気味のフリーランスプログラマー。

どちらかと言うと得意はインフラ構築とサーバーサイドプログラミングですが、フロントエンドもぼちぼちやっています。

最近の興味範囲はWordPress、AWS、サーバーレス、UIデザイン。

愛車はセロー。カメラはペンタックス。旅好きです。横浜在住。