Amazon

ラベル 変数 の投稿を表示しています。 すべての投稿を表示
ラベル 変数 の投稿を表示しています。 すべての投稿を表示

2012年6月3日日曜日

Titaniumで別Window間で変数を渡す場合の注意点

TabGroupを使っている場合各Windowは
var tabGroup = Titanium.UI.currentWindow.tabGroup;
tabGroup.tabs[1].window
でアクセスできる。
#tabs[n]は追加したタブの数

そこで、window A -> tabGroup -> window Bでそれぞれにローカル変数を定義して、渡してあげる方法が一般的
tabGroup.tabs[1].hogeValue = tabGroup.tabs[1].window.hogehogeValue;
tabGroup.tabs[2].window.hogehogehogeValue = tabGroup.tabs[1].hogeValue;

もっとお手軽にやるならば、Titaniumのグローバル変数を使う。
Ti.Appにグローバル変数を定義する
Ti.App._hogeValue = "hoge";

ここで一つ気をつける事がある。
このグローバル変数、基本的に追記ができないようです。
例えば、配列のグローバル変数を作りたいとき
Ti.App._anArray = [];
Ti.App._anArray.push(['hoge']);
としてもTi.Appは更新されない。
#Ti.App._anArray=[]のまま。
そこでTi.App._anArray=['hoge'];
としてあげると更新される。
つまり別オブジェクトを割り当てることは可能だが、該当オブジェクトを追記(上書き)はできないため、一度ローカル変数で追記したい配列なり連想配列を作った上で、Ti.App._anArrayに割当てあげる。

もし配列に要素を追加したい場合は
var currentWithFriends = Ti.App._withFriends;
var ids = {
    name : e.source.text,
    id : e.source.id,
};
currentWithFriends.push(ids);
Ti.App._withFriends = currentWithFriends;

という感じ。

2011年1月30日日曜日

JavaScriptのメモ

1. データ型(基本型と参照型)
データ型は基本型と参照型に大別され、それぞれの振る舞いは異なるので注意。
基本型 数値型(number), 文字列型(string), 真偽型(boolean), 特殊型(null/undefined)
参照型 配列(array), オブジェクト(object), 関数(function)

基本型は値を直接参照するのに対して、参照型は参照先(ポインタ)を参照する。
よって、以下のような結果の違いが出る。

- 基本型
var x = 10;
var y = x;
x = 20;
window.alert(y); // 10(コピーされた値を表示)

- 参照型
var x = [0, 1, 2]; // 配列
var y = x;
x[0] = 10; // 配列の先頭の要素を書き換え
window.alert(y); // 10,1,2(参照元の値を表示)




2. 変数のスコープ
クラスやメソッドにてvarをつけて宣言した変数の有効範囲(スコープ)は、そのクラスまたはメソッド内。
逆にvarのついてない変数はスコープ外の変数だと判断される。

- 変数の有効範囲を、その変数のスコープという
- 暗黙的に宣言された変数は、必ずグローバル変数になる
- 関数の内部で暗黙的に宣言された場合でも、グローバル変数になる
- var文で宣言した変数は、ローカル変数になる

Amazon3