JavaScript获取function所有参数名的方法
作者:bea
我写了一个 JavaScript函数来解析函数的参数名称, 代码如下: function getArgs(func) { // 先用正则匹配,取得符合参数模式的字符串. // 第一个分组是这个: ([^)]*) 非右括号的任意字符 var args = func.toString().match(/functions.*?(([^)]*))/)[1]; // 用逗号来分隔参数(arguments string). return args.split(",").map(fu
我写了一个 JavaScript函数来解析函数的参数名称, 代码如下:
function getArgs(func) {
// 先用正则匹配,取得符合参数模式的字符串.
// 第一个分组是这个: ([^)]*) 非右括号的任意字符
var args = func.toString().match(/functions.*?(([^)]*))/)[1];
// 用逗号来分隔参数(arguments string).
return args.split(",").map(function(arg) {
// 去除注释(inline comments)以及空格
return arg.replace(//*.**//, "").trim();
}).filter(function(arg) {
// 确保没有 undefined.
return arg;
});
}
上面是检测的函数, 示例代码如下:
function myCustomFn(arg1, arg2,arg3) {
// ...
}
// ["arg1", "arg2", "arg3"]
console.log(getArgs(myCustomFn));
正则表达式(regular expression) 是个好东西吗? 别的我不知道, 但在适当的场景用起来还是很给力的!
附带一个Java取得当前函数名的方法: Java 在函数中获取当前函数的函数名
public class Test {
private String getMethodName() {
StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
StackTraceElement e = stacktrace[2];
String methodName = e.getMethodName();
return methodName;
}
public void getXXX() {
String methodName = getMethodName();
System.out.println(methodName);
}
public void getYYY() {
String methodName = getMethodName();
System.out.println(methodName);
}
public static void main(String[] args) {
Test test = new Test();
test.getXXX();
test.getYYY();
}
}
【运行结果】
getXXX
getYYY
【注意】
代码第5行,stacktrace[0].getMethodName() 是 getStackTrace,stacktrace[1].getMethodName() 是 getMethodName,stacktrace[2].getMethodName() 才是调用 getMethodName 的函数的函数名。
// 注意: stacktrace里面的位置;
// [1] 是“getMethodName”, [2] 是调用此方法的method
public static String getMethodName() {
StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
StackTraceElement e = stacktrace[2];
String methodName = e.getMethodName();
return methodName;
}
以上内容是本文给大家介绍的js获取function所有参数名的方法,本文写的不好还请大家见谅,欢迎大家提出宝贵意见。
猜你喜欢
您可能感兴趣的文章:
- 《JavaScript高级编程》学习笔记之object和array引用类型
- JS实现的论坛Ajax打分效果完整实例
- JS实现来回出现文字的状态栏特效代码
- JS实现的3D拖拽翻页效果代码
- JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
- JS实现的简单鼠标跟随DiV层效果完整实例
- js实现点击获取验证码倒计时效果
- JavaScript操作XML/HTML比较常用的对象属性集锦
- 解决jquery中动态新增的元素节点无法触发事件问题的两种方法
- jQuery+Ajax实现无刷新分页
- JavaScript中的定时器之Item23的合理使用
- javascript字符串替换函数如何一次性全部替换掉
- JS实现带提示的星级评分效果完整实例
- jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
- jQuery密码强度检测插件passwordStrength用法实例分析
- 基于jQuery实现的美观星级评论打分组件代码
- jQuery实现的个性化返回底部与返回顶部特效代码
- 自己动手写的javascript前端等待控件
- jQuery实现的仿百度分页足迹效果代码