最近、一部のイテレータですべて jQuery* を使用することにしました。
// forEach being a built-in method of myList that iterates over its members.
myList.forEach(function(i:ListItem):void {
// Do something with i.
});
ただし、このコードの一部はすべてのフレームで呼び出されるため、プロファイリングを行うと多くのクロージャ割り当てが見つかります。パフォーマンス上の理由から GC を最小限に抑えたいのですが、それを行う唯一の方法は、匿名関数ではなく名前付き関数を使用することだと思いますか? しなければならない場合は、しなければなりませんが、特にこれらのメソッドのいくつかはネストされた反復子を持つことになるため、扱いにくく、従うのが難しいと感じます。つまり、メンバーmyList
自体が配列のようなオブジェクトであり、それらのメンバーも反復処理する必要があります。私は本当に以下のようなことをしなければなりませんか?
function enterFrame(e:Event):void {
myList.forEach(iterator1);
}
function iterator1(i:ListItem):void {
i:forEach(iterator2);
}
function iterator2(j:ListItemItem):void {
// Do stuff with j.
}
*編集:明確にさせてください。Javascript ではなく、Actionscript 3 で作業しています。私のコード構造は、jQuery での経験に触発されたという事実に言及しています。jQuery は、そのドキュメントで、古典的なように、コールバックとして匿名関数の使用を積極的に奨励しています。$(document).ready(function() {});