Javascript - 在所有函数的输入上以编程方式执行方法

标签 javascript function methods preprocessor

我想将解析器添加到函数列表中,例如:

var list = {
    function1: function(input){},
    function2: function(input){}
}

我希望所有输入参数都用另一个函数进行预处理。这可能吗?

有什么建议吗?

提前致谢

最佳答案

你的意思是这样的吗?它使用将 f 预应用于其输入的方法创建 funcs 的新副本。:

function addPreProcessing(funcs, f) {
    return Object.keys(funcs).reduce(function (o, key) {
        o[key] = function (input) {
            return funcs[key](f(input));
        };
        return o;
    }, {});
}

var list = {
     log: function (input) { snippet.log(input); },
     quadruple: function (input) { return input * 4; }
};

// preprocess all inputs by doubling them
var list2 = addPreProcessing(list, function (input) {
     return input * 2;
});

list2.log(5);                        // logs 10   ( 5 * 2 )
snippet.log(list2.quadruple(1));     // logs 8    ( 1 * 2 * 4)
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

这是上面 addPreProcessing 函数的 lodash 版本:

function addPreProcessing(funcs, f) {
    return _.mapValues(funcs, _.flowRight(_.partial(_.flow, f), _.identity));
}

关于Javascript - 在所有函数的输入上以编程方式执行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29019173/

相关文章:

javascript - 关于 .animate() 和 .prop() 的滚动问题?

javascript - 双数据集的数据操作

python - 如何从函数本身内部打印python函数的Docstring?

c - 以错误的方式调用函数(序列的总和)

java - 没有找到适合 println 的方法... Java

javascript - 在 ASP.Net Core 上上传文件返回空 Request.Form.Files,仅在 React 上

javascript - 如何克隆下拉列表中选定的元素

c++ - 创建指向其他对象的列表指针

Java 制作数学方法

go - golang 接口(interface)中是否可以有可选方法?