我最近决定在一些迭代器上使用所有 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.
}
*编辑:让我澄清一下。我正在使用 Actionscript 3,而不是 Javascript。我指的是我的代码结构受到我使用 jQuery 经验的启发,在其文档中积极鼓励使用匿名函数作为回调,就像在经典$(document).ready(function() {});