gpt4 book ai didi

javascript - 通过另一个函数透明地传递一个函数的参数

转载 作者:行者123 更新时间:2023-11-30 05:51:31 25 4
gpt4 key购买 nike

我正在构建一个由数百个函数组成的相当大的 JavaScript 库。每个函数都有一定数量的参数,有时在设计时不知道。我需要通过某种参数 cleanUp() 函数传递每个函数参数。我可以做这样的事情:

function myFunction(param1, param2, ..., paramN) {
var param1 = cleanUp(param1);
var param2 = cleanUp(param2);
...
var paramN = cleanUp(paramN);

// Function's implementation goes here
}

function cleanUp(param) {
// Cleanup code goes here
return cleanParam;
}

但这会非常冗长和重复(记住,我有数百个这样的函数)。

我的问题是:通过 cleanUp 函数透明地传递所有函数参数的最佳方法是什么,可以是继承,也可以是更合适的方法。我知道我可以使用 arguments 变量来访问所有函数的参数,但我希望清理发生在函数本身的外部,进入一些其他函数我的功能可以“继承”自。

注意:在所有函数中,为了便于阅读,参数必须保留其原始名称。

最佳答案

我想我的问题措辞不当,但我仍然不确定如何改进它。

无论如何,这是我从同事那里得到的答案。以一种危险的方式,如果有人可以改写我最初的问题以匹配我正在寻找的答案,我会很高兴,因为我很确定由此产生的问答具有一定的值(value)。

// Parameter cleanup function
function cleanUp(param) {
// Cleanup code goes here
return cleanParam;
}

// Implementation of one of the hundreds of functions in the library
function _myFunction(param1, param2, ..., paramN) {
// Function's implementation goes here
}

// Proxy of one of these functions with clean parameters
function myFunction = makeProxy(_myFunction);

// Utility function to create a proxies for the library functions
function makeProxy(fn) {
function proxy() {
var cleanParams = [];
for (var i = 0; i < arguments.length; i++) {
cleanParams.push(cleanUp(arguments[i]));
}
return fn.apply(this, cleanParams);
}
return proxy;
}

谢谢帕斯卡!

关于javascript - 通过另一个函数透明地传递一个函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14585077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com