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));
正則表達(dá)式(regular expression) 是個好東西嗎? 別的我不知道, 但在適當(dāng)?shù)膱鼍坝闷饋磉€是很給力的!
附帶一個Java取得當(dāng)前函數(shù)名的方法: Java 在函數(shù)中獲取當(dāng)前函數(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();
}
}
【運(yùn)行結(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基礎(chǔ)篇(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)文章
layui-table表復(fù)選框勾選的所有行數(shù)據(jù)獲取的例子
今天小編就為大家分享一篇layui-table表復(fù)選框勾選的所有行數(shù)據(jù)獲取的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
JavaScript省市級聯(lián)下拉菜單實(shí)例
這篇文章主要為大家詳細(xì)介紹了JavaScript省市級聯(lián)下拉菜單實(shí)例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02
JS實(shí)現(xiàn)根據(jù)出生年月計(jì)算年齡
本篇文章主要是對利用JS實(shí)現(xiàn)根據(jù)出生年月計(jì)算年齡的示例代碼進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01
Javascript中數(shù)組sort和reverse用法分析
這篇文章主要介紹了Javascript中數(shù)組sort和reverse用法,實(shí)例分析了sort和reverse使用時的注意事項(xiàng)與相關(guān)技巧,具有不錯的參考借鑒價值,需要的朋友可以參考下2014-12-12
js內(nèi)置對象處理_打印學(xué)生成績單的簡單實(shí)現(xiàn)
下面小編就為大家?guī)硪黄猨s內(nèi)置對象處理_打印學(xué)生成績單的簡單實(shí)現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09
JavaScript筆記之?dāng)?shù)據(jù)屬性和存儲器屬性
本文給大家介紹js數(shù)據(jù)屬性和存儲器屬性,及兩種屬性的區(qū)別,對js數(shù)據(jù)屬性存儲器屬性相關(guān)知識感興趣的朋友一起學(xué)習(xí)2016-03-03

