Javascript 透明的管道功能';通过另一个函数调用参数

Javascript 透明的管道功能';通过另一个函数调用参数,javascript,inheritance,casting,Javascript,Inheritance,Casting,我正在构建一个由数百个函数组成的相当大的JavaScript库。每个函数都有一定数量的参数,有时在设计时是未知的。我需要将每个函数参数通过某种参数cleanUp()函数传递。我可以这样做: function myFunction(param1, param2, ..., paramN) { var param1 = cleanUp(param1); var param2 = cleanUp(param2); ... var paramN = cleanUp(paramN);

我正在构建一个由数百个函数组成的相当大的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
变量来访问所有函数的参数,但我希望清除过程发生在函数本身之外,进入我的函数可以“继承”的其他函数


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

在函数中使用“arguments”变量。这是一张。。。好。。。所有参数:-)


//传递内部参数对象

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

我猜我的问题没有恰当地表达出来,但我仍然不知道如何改进它

不管怎样,我从一位同事那里得到了一个答案。以一种危险的方式,我希望有人能改写我最初的问题,以匹配我所寻找的答案,因为我非常确定由此产生的问答有一定的价值

// 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;
}
//参数清理函数
函数清理(参数){
//清理代码在这里
返回cleanParam;
}
//库中数百个函数之一的实现
函数_myFunction(param1,param2,…,paramN){
//函数的实现在这里
}
//具有干净参数的其中一个函数的代理
函数myFunction=makeProxy(_myFunction);
//实用程序函数为库函数创建代理
函数makeProxy(fn){
函数代理(){
var cleanParams=[];
for(var i=0;i

谢谢你,帕斯卡

循环遍历包含函数所有参数的
参数
变量。谢谢你的回答,我相应地澄清了我的问题。javascript不(直接)支持inheritance@DoXicK我明白,这就是为什么我在寻找一些可以实现类似目标的模式。它可能不存在,但我怀疑原型可能会有所帮助。我只需要把我的心思放在它上面。感谢您的帮助。您可以将其表述为“如何创建代理以透明地评估函数的参数?”感谢您的回答,我相应地澄清了我的问题。感谢您的回答,我相应地澄清了我的问题。从未想过为此使用代理模式。每天学习新东西:-)作为标题的建议,您可以使用以下关键词:代理、封装、预处理/评估、参数映射。您甚至可以考虑为makeProxy函数添加第二个参数,以便传递cleanUp函数。makeProxy(_myFunction,cleanUp);我花了一些时间和额外的线下讨论来理解伊斯梅尔想要实现的目标。不知道如何用一种不会让答案“显而易见”的方式来表达答案
// 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;
}