在java或者php中,我们可以通过反射来获取一个函数(方法)的参数列表等具体信息,那么在js中呢?比如下面这这个函数
js
function test(a, b, c) { return a + b + c; }
我如何获取test函数的参数列表呢?
Function.prototype.toString
好吧。。。。
function testArguments(argv1, argv2) {
for (var i in arguments) {
alert(arguments[i]);
}
}
不知道你要找的是不是arguments这个内置列表.
sf好像不能发送私信,我就是想问一下:楼主你这个问题解决了吗?我百度到较为靠谱的方法就是在test.toString()中提取形参列表了,看了一下 王子亭 回答的源码好像也是这种方式。。问问楼主找到其他更为简单的方法了吗?
形参个数:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/length
形参名字(不建议,因为 JS 代码通常会压缩和混淆):https://github.com/goatslacker/get-parameter-names
js的函数并不在乎你参数的名字,要查参数名也没意义,它随时都可以变化。你只能从FUNCTION.length获取形参的个数。
如@kiinlam 所说,只需要用lenth获取参数个数就行了,
补充不是说js不在乎参数名字,几乎没有一门编程语言会在乎形参名字,严格点的编程语言会有类型检测,可以看到js它类型检测都不需要,和php有点类似。