有没有办法动态获取函数的函数参数名称?
假设我的函数看起来像这样:
function doSomething(param1, param2, .... paramN){
// fill an array with the parameter name and value
// some other code
}
Run Code Online (Sandbox Code Playgroud)
现在,我如何从函数内部获取参数名称及其值的列表到数组中?
我想要做的就是传递给函数的变量的名称和该变量的值,并且只在一个变量传递给函数.所以:
var x = "anything";
function showName() {
}
showName(x);
Run Code Online (Sandbox Code Playgroud)
要么
showName("x");
Run Code Online (Sandbox Code Playgroud)
将返回:"x =任何东西".
现在,我必须指定变量两次:
showName("x", x);
Run Code Online (Sandbox Code Playgroud)
为了获取我传入的变量的名称和值.
请注意,我对showName原型中的参数名称不感兴趣,但是对调用函数中的变量名称不感兴趣.另外,传递的变量可能是本地的,所以我不能使用window对象来查找变量.
我正在寻找一个vanilla JavaScript解决方案.
假设我有一个带有以下标题的函数:
generateEmail(firstName, lastname, provider)
Run Code Online (Sandbox Code Playgroud)
我需要像这样运行它:
generateEmail("John","Smith","gmail.com");
Run Code Online (Sandbox Code Playgroud)
我希望能够用参数映射而不是位置参数来调用它,即
generateEmail({
"firstName":"John",
"lastname": "Smith",
"provider": "gmail.com"
});
Run Code Online (Sandbox Code Playgroud)
而且我正在寻找一个已经编写好的JavaScript解决方案,因为我有无限数量的函数,比如上面的generateEmail来处理.这样的图书馆存在吗?
我见过https://github.com/kilianc/node-introspect处理函数内省(返回函数抽象参数信息).但第二部分缺失 - 将map-call映射到位置调用.
请告诉我,这样的事情是否存在.
编辑:如果我没有说清楚:我不想修改原始的位置参数函数.我从外部提供程序获得这些函数,可以更新他的代码.我宁愿选择一个可以调用下面原始函数的包装器,并在外面提供一个map-argument API.