0

ここで見落としている簡単なものがあると思います。しかし、基本的に、私がやろうとしていることは単に..コードの方がより良い説明になると思います。

tobj = (an Array containing objects.)

for(i = 0; i < tobj.length; i++) {
   tobj[i].func = function() {
       trace(i);
   }
}

基本的に、私はここで何が起こるかを理解しています..グローバル変数が変更されると、その関数を実行すると、割り当てられたときの値に関係なく、iの最後の値が取得されます。基本的に、私はここで i をグローバルとしてローカルに変換するために使用するアプローチを理解しようとしています。これにより、オブジェクトで関数を実行すると、変数が割り当てられたとおりに出力されます。

わかりやすくて簡単であることを願っています。前もって感謝します。

4

2 に答える 2

1

関数宣言の閉じ括弧の後に括弧を追加すると、次の関数が実行されます。

var tobj = [new Object(),new Object(), new Object()];

for(var i = 0; i < tobj.length; i++) {
     tobj[i].func = function() {
     trace(i);
}() // < ------

これはトレースします: "0"、 "1"、 "2"

于 2013-03-20T10:14:32.757 に答える
0

簡単な解決策...別の方法があるかもしれませんが、これが私にとってはうまくいきました。ほんの数分間そこから離れました。

tobj = (an Array containing objects.)

for(i = 0; i < tobj.length; i++) {
   tobj[i].func = function() {
       assigner(i);
   }
}

function assigner(var) {
   trace(var);
}
于 2013-03-20T10:17:14.910 に答える