减少向函数队列添加函数的样板

时间:2010-04-22 19:31:02

标签: javascript metaprogramming

我在JavaScript中使用动画,我可以调用一些函数来添加动画队列。基本上,所有这些功能都是这样的:

function foo(arg1, arg2) {
    _eventQueue.push(function() {
        // actual logic
    }
 }

我现在想知道是否可以稍微减少这个样板,所以我不需要在每个函数体中多次使用额外的“_eventQueue”行数十次。例如,是否可以创建一个辅助函数,该函数将任意函数作为参数并返回一个新函数,该函数被扩充以自动添加到事件队列中?唯一的问题是我需要找到一种方法来维护对这个过程中函数原始参数的访问,这很复杂。

1 个答案:

答案 0 :(得分:3)

您正在寻找arguments标识符,它提供了一个类似于数组的对象,其中包含传递给当前函数的参数。

例如:

function createEnqueuer(func) {
    return function() {
        var outerArgs = arguments;

        _eventQueue.push(function() {
            return func.apply(window, outerArgs);
        });
    };
}