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 相关文章推荐
Jquery 滑入滑出效果实现代码
Mar 27 Javascript
关于文本框的一些限制控制总结~~
Apr 15 Javascript
客户端js性能优化小技巧整理
Nov 05 Javascript
jquery复选框checkbox实现删除前判断
Apr 20 Javascript
JavaScript的内存释放问题详解
Jan 21 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
Sep 24 Javascript
jQuery深拷贝Json对象简单示例
Jul 06 Javascript
详解angularJs指令的3种绑定策略
Apr 13 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
Nov 22 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
Mar 12 Javascript
js消除图片小游戏代码
Dec 11 Javascript
typescript配置alias的详细步骤
Aug 12 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 验证登陆类分享
2015/03/13 PHP
基于thinkPHP实现的微信自定义分享功能示例
2016/09/23 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
jquery通过select列表选择框对表格数据进行过滤示例
2014/05/07 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
jQuery实现发送验证码并60秒倒计时功能
2016/11/25 Javascript
基于js中的原型(全面讲解)
2017/09/19 Javascript
实例教学如何写vue插件
2017/11/30 Javascript
jquery 获取索引值在一定范围的列表方法
2018/01/25 jQuery
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
使用vue-route 的 beforeEach 实现导航守卫(路由跳转前验证登录)功能
2018/03/22 Javascript
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
Node.js API详解之 module模块用法实例分析
2020/05/13 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
Python实现接受任意个数参数的函数方法
2018/04/21 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
2020/04/18 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
阿联酋优惠券服务:Living Kool
2019/12/12 全球购物
三维科技面试题
2013/07/27 面试题
Java基础面试题
2012/11/02 面试题
完美实现CSS垂直居中的11种方法
2021/03/27 HTML / CSS
英语专业毕业生自荐信范文
2013/12/31 职场文书
物理学专业求职信
2014/07/04 职场文书
第28个世界无烟日活动总结
2015/02/10 职场文书
2015年行政助理工作总结
2015/04/30 职场文书
会议简报格式范文
2015/07/20 职场文书
劳保用品管理制度范本
2015/08/06 职场文书