javascript - 减少将函数添加到函数队列的样板

标签 javascript metaprogramming

我正在使用 JavaScript 处理动画,我有一堆函数可以调用以将内容添加到动画队列中。基本上,所有这些函数看起来像这样:

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

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

最佳答案

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

例如:

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

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

关于javascript - 减少将函数添加到函数队列的样板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2693848/

相关文章:

java - 如何将 Java Calendar 和 Java Date 序列化为 Javascript Date

ruby - 为什么 const_missing 不在其前面加上 Object 就不能工作?

Ruby 插件架构

c++ - 如何做一个运行时子类化系统

c++ - 如何在 Boost.MPL 中使用嵌套元函数?

javascript - 将生成的内容包裹在文本区域中选定的文本周围?

php - 在不使用单字字体的情况下,固定每个 <p> 的字符行数,这可能吗?

javascript - 为什么 10 * (7/10) = 7 在 JavaScript 中?

javascript - 在 beforeUnload 上发送 ajax 调用被浏览器取消

ruby - Ruby 中元编程的常见/值得注意的用途是什么?