JavaScript獲取function所有參數(shù)名的方法
我寫了一個 JavaScript函數(shù)來解析函數(shù)的參數(shù)名稱, 代碼如下:
function getArgs(func) {
// 先用正則匹配,取得符合參數(shù)模式的字符串.
// 第一個分組是這個: ([^)]*) 非右括號的任意字符
var args = func.toString().match(/function\s.*?\(([^)]*)\)/)[1];
// 用逗號來分隔參數(shù)(arguments string).
return args.split(",").map(function(arg) {
// 去除注釋(inline comments)以及空格
return arg.replace(/\/\*.*\*\//, "").trim();
}).filter(function(arg) {
// 確保沒有 undefined.
return arg;
});
}
上面是檢測的函數(shù), 示例代碼如下:
function myCustomFn(arg1, arg2,arg3) {
// ...
}
// ["arg1", "arg2", "arg3"]
console.log(getArgs(myCustomFn));
正則表達式(regular expression) 是個好東西嗎? 別的我不知道, 但在適當?shù)膱鼍坝闷饋磉€是很給力的!
附帶一個Java取得當前函數(shù)名的方法: Java 在函數(shù)中獲取當前函數(shù)的函數(shù)名
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();
}
}
【運行結(jié)果】
getXXX
getYYY
【注意】
代碼第5行,stacktrace[0].getMethodName() 是 getStackTrace,stacktrace[1].getMethodName() 是 getMethodName,stacktrace[2].getMethodName() 才是調(diào)用 getMethodName 的函數(shù)的函數(shù)名。
// 注意: stacktrace里面的位置;
// [1] 是“getMethodName”, [2] 是調(diào)用此方法的method
public static String getMethodName() {
StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
StackTraceElement e = stacktrace[2];
String methodName = e.getMethodName();
return methodName;
}
以上內(nèi)容是本文給大家介紹的js獲取function所有參數(shù)名的方法,本文寫的不好還請大家見諒,歡迎大家提出寶貴意見。
- Javascript自執(zhí)行匿名函數(shù)(function() { })()的原理淺析
- JavaScript中Function函數(shù)與Object對象的關(guān)系
- JavaScript基礎篇(3)之Object、Function等引用類型
- js立即執(zhí)行函數(shù): (function ( ){})( ) 與 (function ( ){}( )) 有什么區(qū)別?
- seajs加載jquery時提示$ is not a function該怎么解決
- javascript中$(function() {});寫與不寫有哪些區(qū)別
- javascript中Function類型詳解
- JavaScript Function函數(shù)類型介紹
- JavaScript中Function詳解
- js入門之Function函數(shù)的使用方法【新手必看】
相關(guān)文章
window.setInterval()方法的定義和用法及offsetLeft與style.left的區(qū)別
window.setInterval()方法可以按照指定的周期執(zhí)行來執(zhí)行一段程序。周期是以毫秒為單位的,本文給大家介紹window.setInterval()方法的定義和用法,感興趣的朋友參考下2015-11-11
D3.js實現(xiàn)餅圖,環(huán)圖,玫瑰圖的繪制
這篇文章主要為大家介紹了如何利用D3.js中的d3.pie和d3.arc實現(xiàn)餅圖、環(huán)圖和玫瑰圖的繪制,文中的實現(xiàn)方法講解詳細,感興趣的可以嘗試一下2022-11-11
javascript簡單進制轉(zhuǎn)換實現(xiàn)方法
這篇文章主要介紹了javascript簡單進制轉(zhuǎn)換實現(xiàn)方法,涉及javascript字符串轉(zhuǎn)換與數(shù)值操作相關(guān)技巧,需要的朋友可以參考下2016-11-11
利用JavaScript實現(xiàn)防抖節(jié)流函數(shù)的示例代碼
在開發(fā)中我們經(jīng)常會遇到一些高頻操作,比如:鼠標移動,滑動窗口,鍵盤輸入等等,節(jié)流和防抖就是對此類事件進行優(yōu)化,降低觸發(fā)的頻率,以達到提高性能的目的。本文就教大家如何實現(xiàn)一個讓面試官拍大腿的防抖節(jié)流函數(shù),需要的可以參考一下2022-08-08
JavaScript切換搜索引擎的導航網(wǎng)頁搜索框?qū)嵗a
這篇文章主要介紹了javascript切換搜索引擎的導航網(wǎng)頁搜索框的實例代碼,非常不錯,具有參考借鑒價值 ,需要的朋友可以參考下2017-06-06

