JavaScript獲取function所有參數(shù)名的方法
我寫(xiě)了一個(gè) JavaScript函數(shù)來(lái)解析函數(shù)的參數(shù)名稱(chēng), 代碼如下:
function getArgs(func) {
// 先用正則匹配,取得符合參數(shù)模式的字符串.
// 第一個(gè)分組是這個(gè): ([^)]*) 非右括號(hào)的任意字符
var args = func.toString().match(/function\s.*?\(([^)]*)\)/)[1];
// 用逗號(hào)來(lái)分隔參數(shù)(arguments string).
return args.split(",").map(function(arg) {
// 去除注釋(inline comments)以及空格
return arg.replace(/\/\*.*\*\//, "").trim();
}).filter(function(arg) {
// 確保沒(méi)有 undefined.
return arg;
});
}
上面是檢測(cè)的函數(shù), 示例代碼如下:
function myCustomFn(arg1, arg2,arg3) {
// ...
}
// ["arg1", "arg2", "arg3"]
console.log(getArgs(myCustomFn));
正則表達(dá)式(regular expression) 是個(gè)好東西嗎? 別的我不知道, 但在適當(dāng)?shù)膱?chǎng)景用起來(lái)還是很給力的!
附帶一個(gè)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ù)名的方法,本文寫(xiě)的不好還請(qǐng)大家見(jiàn)諒,歡迎大家提出寶貴意見(jiàn)。
- Javascript自執(zhí)行匿名函數(shù)(function() { })()的原理淺析
- JavaScript中Function函數(shù)與Object對(duì)象的關(guān)系
- JavaScript基礎(chǔ)篇(3)之Object、Function等引用類(lèi)型
- js立即執(zhí)行函數(shù): (function ( ){})( ) 與 (function ( ){}( )) 有什么區(qū)別?
- seajs加載jquery時(shí)提示$ is not a function該怎么解決
- javascript中$(function() {});寫(xiě)與不寫(xiě)有哪些區(qū)別
- javascript中Function類(lèi)型詳解
- JavaScript Function函數(shù)類(lèi)型介紹
- JavaScript中Function詳解
- js入門(mén)之Function函數(shù)的使用方法【新手必看】
相關(guān)文章
layui-table表復(fù)選框勾選的所有行數(shù)據(jù)獲取的例子
今天小編就為大家分享一篇layui-table表復(fù)選框勾選的所有行數(shù)據(jù)獲取的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
JavaScript省市級(jí)聯(lián)下拉菜單實(shí)例
這篇文章主要為大家詳細(xì)介紹了JavaScript省市級(jí)聯(lián)下拉菜單實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
JS實(shí)現(xiàn)根據(jù)出生年月計(jì)算年齡
本篇文章主要是對(duì)利用JS實(shí)現(xiàn)根據(jù)出生年月計(jì)算年齡的示例代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-01-01
Javascript中數(shù)組sort和reverse用法分析
這篇文章主要介紹了Javascript中數(shù)組sort和reverse用法,實(shí)例分析了sort和reverse使用時(shí)的注意事項(xiàng)與相關(guān)技巧,具有不錯(cuò)的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12
js內(nèi)置對(duì)象處理_打印學(xué)生成績(jī)單的簡(jiǎn)單實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇js內(nèi)置對(duì)象處理_打印學(xué)生成績(jī)單的簡(jiǎn)單實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09
JavaScript筆記之?dāng)?shù)據(jù)屬性和存儲(chǔ)器屬性
本文給大家介紹js數(shù)據(jù)屬性和存儲(chǔ)器屬性,及兩種屬性的區(qū)別,對(duì)js數(shù)據(jù)屬性存儲(chǔ)器屬性相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)2016-03-03

