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 相关文章推荐
javascript实现dom元素可拖动
Mar 21 Javascript
基于jquery实现表格内容筛选功能实例解析
May 09 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
May 12 Javascript
javascript入门之window对象【新手必看】
Nov 22 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
Mar 09 Javascript
checkbox:click事件触发span元素内容改变的方法
Sep 11 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
Oct 26 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
Dec 25 jQuery
JointJS流程图的绘制方法
Dec 03 Javascript
jQuery实现简单飞机大战
Jul 05 jQuery
JS变量提升及函数提升实例解析
Sep 03 Javascript
js实现手表表盘时钟与圆周运动
Sep 18 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
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
PHP swoole和redis异步任务实现方法分析
2019/08/12 PHP
不错的JS中变量相关的细节分析
2007/08/13 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
js中function()使用方法
2013/12/24 Javascript
button没写type=button会导致点击时提交
2014/03/06 Javascript
angularJS提交表单(form)
2015/02/09 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
Bootstrap3学习笔记(二)之排版
2016/05/20 Javascript
微信小程序加载更多 点击查看更多
2016/11/29 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
基于vue中对鼠标划过事件的处理方式详解
2018/08/22 Javascript
nodejs中express入门和基础知识点学习
2018/09/13 NodeJs
element vue Array数组和Map对象的添加与删除操作
2018/11/14 Javascript
JavaScript 判断iPhone X Series机型的方法
2019/01/28 Javascript
微信小程序iOS下拉白屏晃动问题解决方案
2019/10/12 Javascript
vuex分模块后,实现获取state的值
2020/07/26 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
python设置windows桌面壁纸的实现代码
2013/01/28 Python
使用Python脚本在Linux下实现部分Bash Shell的教程
2015/04/17 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
python处理数据,存进hive表的方法
2018/07/04 Python
Python3 翻转二叉树的实现
2019/09/30 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
2020/05/26 Python
python Scrapy爬虫框架的使用
2021/01/21 Python
商务考察邀请函范文
2014/01/21 职场文书
学生安全教育材料
2014/02/14 职场文书
幼儿园教研活动总结
2014/04/30 职场文书
单位作风建设自查报告
2014/10/23 职场文书
2014年医德医风工作总结
2014/11/13 职场文书
初中重阳节活动总结
2015/05/05 职场文书
pandas中DataFrame检测重复值的实现
2021/05/26 Python