JavaScript获取function所有参数名的方法


Posted in Javascript onOctober 30, 2015

我写了一个 JavaScript函数来解析函数的参数名称, 代码如下:

function getArgs(func) {
 // 先用正则匹配,取得符合参数模式的字符串.
 // 第一个分组是这个: ([^)]*) 非右括号的任意字符
 var args = func.toString().match(/function\s.*?\(([^)]*)\)/)[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 相关文章推荐
(function(){})()的用法与优点
Mar 11 Javascript
IE 下的只读 innerHTML
Aug 21 Javascript
JavaScript浏览器选项卡效果
Aug 25 Javascript
表单JS弹出填写提示效果代码
Apr 16 Javascript
ie与ff下的event事件使用介绍
Nov 25 Javascript
jQuery获取URL请求参数的方法
Jul 18 Javascript
jquery解析json格式数据的方法(对象、字符串)
Nov 24 Javascript
AngularJS实现页面定时刷新
Mar 14 Javascript
vue 中自定义指令改变data中的值
Jun 02 Javascript
JS实现商品筛选功能
Aug 19 Javascript
vue上传图片组件编写代码
Jul 26 Javascript
使用JQ完成表格隔行换色的简单实例
Aug 25 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
Sep 01 #Javascript
jQuery实现切换页面过渡动画效果
Oct 29 #Javascript
js实现跨域的4种实用方法原理分析
Oct 29 #Javascript
异步JS框架的作用以及实现方法
Oct 29 #Javascript
图解JavaScript中的this关键字
May 28 #Javascript
jquery validate demo 基础
Oct 29 #Javascript
jQuery实现彩带延伸效果的网页加载条loading动画
Oct 29 #Javascript
You might like
PHP获取二叉树镜像的方法
2018/01/17 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
2019/09/12 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
JavaScript对象链式操作代码(jquery)
2010/07/04 Javascript
深入理解javascript学习笔记(一) 编写高质量代码
2012/08/09 Javascript
jQuery插件MixItUp实现动画过滤和排序
2015/04/12 Javascript
JS实现转动随机数抽奖特效代码
2020/04/16 Javascript
javascript HTML5文件上传FileReader API
2020/03/27 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
jQueryUI中的datepicker使用方法详解
2016/05/25 Javascript
微信小程序  audio音频播放详解及实例
2016/11/02 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
2017/04/13 Javascript
windows下vue-cli导入bootstrap样式
2017/04/25 Javascript
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
angularjs实现时间轴效果的示例代码
2017/11/29 Javascript
微信小程序仿朋友圈发布动态功能
2018/07/15 Javascript
微信小程序mpvue点击按钮获取button值的方法
2019/05/29 Javascript
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
Python 从attribute到property详解
2020/03/05 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
SQL数据库笔试题
2016/03/08 面试题
高中毕业生自我鉴定
2013/11/03 职场文书
高一自我鉴定
2013/12/17 职场文书
办公室岗位职责
2014/02/12 职场文书
幼儿教师寄语集锦
2014/04/03 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
文明礼仪标语
2014/06/13 职场文书
装饰公司活动策划方案
2014/08/23 职场文书
Python基础详解之邮件处理
2021/04/28 Python
Python进行区间取值案例讲解
2021/08/02 Python
MYSQL事务的隔离级别与MVCC
2022/05/25 MySQL
MYSQL如何查看操作日志详解
2022/05/30 MySQL