- 992 名前:名前は開発中のものです。 mailto:sage [2009/06/04(木) 17:30:37 ID:N3LAFxc/]
- >>991
吉里吉里には JavaScript のような変数を自前で巻き込むクロージャは無い。 自前でコンテキストを作ってやれば似たことはできる。 てっとりばやくその場処理したければ辞書を使う var func = [], i = 10; while(i--) func[i] = function { return i; } incontextof %[i:i]; Debug.message( func[4]() + ',' + func[5]() ); ただし、辞書のコンテキストはグローバルを自動的に参照してくれないので明示的な指定が必要になる。 × func[i] = function { Debug.message(i); } incontextof %[i:i] ○ func[i] = function { global.Debug.message(i); } incontextof %[i:i] それから、存在しない変数を参照しようとしても常に void が帰ってくるためエラーにならない。 func[i] = function { return a; } incontextof %[i:i] // a は存在してないけど void が帰るのでエラーにならない この挙動が嫌な場合はクラスを専用につくって対応すればいい class Func { var i; function Func(i) { this.i = i; } function func() { return i;} }; func[i] = (new Func(i)).func;
|

|