JavaScript: 取得 function 的所有参数名
在阅读 promisify-node 源码的时候, 想看看作者是如何将基本的函数和对象转换为对应的 promised-based API 的。我很快意识到他们通过函数的签名来查找通用的回调参数名称, 如 callback
或者 cb
。代码看起来有点古怪但确实很有效。【注: 新一代的JS框架大多采用这种探测策略,如 AngularJS】
我写了一个 JavaScrip t函数来解析函数的参数名称, 代码如下:
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 在函数中获取当前函数的函数名
// 注意: stacktrace里面的位置;
// [1] 是“getMethodName”, [2] 是调用此方法的method
public static String getMethodName() { StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace(); StackTraceElement e = stacktrace[2]; String methodName = e.getMethodName(); return methodName;
}
原文链接: Detect Function Argument Names with JavaScript
原文日期: 2015年10月21日
翻译日期: 2015年10月26日
翻译人员: 铁锚 http://blog.csdn.net/renfufei
JavaScript: 取得 function 的所有参数名相关推荐
- JavaScript学习(八十)—请写一段JS程序提取URL中的各个get参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中
JavaScript学习(八十)-请写一段JS程序提取URL中的各个get参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中 题目: 代码:
- javascript中 (function(){})();如何理解?
javascript中 (function(){})();如何理解? javascript中: (function(){})()是匿名函数,主要利用函数内的变量作用域,避免产生全局变量,影响整体页面环 ...
- JavaScript学习总结(七)——JavaScript函数(function)
转载自 JavaScript学习总结(七)--JavaScript函数(function) 一.函数基本概念 为完成某一功能的程序指令(语句)的集合,称为函数. 二.JavaScript函数的分类 ...
- 菜鸟教程 之 JavaScript 函数(function)
From:https://www.runoob.com/js/js-function-definition.html JavaScript 函数定义 JavaScript 使用关键字 function ...
- 如何用mshtml获得Javascript中function的返回值[mshtml]
marginwidth="0" marginheight="0" src="http://218.16.120.35:65001/PC/Global/ ...
- javascript/jquery获取地址栏url参数的方法
本篇文章主要是对javascript/jquery获取地址栏url参数的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助. 使用jquery获取url以及使用jquery获取url参数是我 ...
- JavaScript为事件处理器传递参数 (转)
首先参考:javascript attachEvent和addEventListener 使用方法 attachEvent方法,为某一事件附加其它的处理事件.(不支持Mozilla系列) addEve ...
- php 正则替换url参数,JavaScript正则获取地址栏中参数的方法分享
这篇文章主要介绍了JavaScript正则获取地址栏中参数的方法,涉及javascript基于正则的字符串截取操作相关实现技巧,需要的朋友可以参考下 本文实例讲述了JavaScript正则获取地址栏中 ...
- 谈谈JavaScript中function多重理解
JavaScript 中的 function 有多重意义.它可能是一个构造器(constructor),承担起对象模板的作用: 可能是对象的方法(method),负责向对象发送消息.还可能是函数,没错 ...
最新文章
- python 字符串切割例题_Python字符串及练习题
- NLTK学习笔记(二):文本、语料资源和WordNet汇总
- kbmmw 的HTTPSmartService入门
- 如何使用python numpy中的数组复制
- 从程序员到项目经理(二十九):怎样写文档
- 最长连续序列—leetcode128
- nodejs mysql备份_node.js实现备份mysql数据库功能
- SpringCloud(二) 服务注册与发现Eureka
- create table as select性能测试
- Radware:应用交付向云端扩展
- java bytebuffer 读写_java nio bytebuffer文件读写问题
- canvas 实现图片局部模糊_Canvas 在高清屏下绘制图片变模糊的解决方法
- linux 查看 pub文件夹,linux 文件/目录的属性及权限
- JCreator Error : Invalid path
- 中国计算机学会推荐国际学术会议和期刊目录
- 斐讯k3怎么设置虚拟服务器,斐讯K3路由器功能介绍及使用教程
- origin2021绘图软件安装教程
- deglitch 技术_fdc2214中文资料-技术参考.pdf
- 《Python数据科学手册》—学习笔记
- 在安装anaconda3(自带python3.7)和自己安装的python2.7的win10系统中安装pymol
热门文章
- How to change the status of Prepayment invoice
- 关于winform屏蔽锁
- LINUX下的tty,console与串口分析
- microscope image 3D reconstruction
- 微信跳一跳高分系列四:一个 JAVA 版开源的微信跳一跳辅助工具
- WPF 中的 Uri 地址的不同写法
- code1167 树网的核
- Js里面IF(var)表示什么意思?js中if的写法、含义
- 给asterisk1.8.7添加menuselct选项
- 深圳php和java,深圳java技术培训学习(Java和PHP区别)