JavaScript獲取function所有參數(shù)名的方法
我寫了一個(gè) JavaScript函數(shù)來解析函數(shù)的參數(shù)名稱, 代碼如下:
function getArgs(func) {
// 先用正則匹配,取得符合參數(shù)模式的字符串.
// 第一個(gè)分組是這個(gè): ([^)]*) 非右括號的任意字符
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) 是個(gè)好東西嗎? 別的我不知道, 但在適當(dāng)?shù)膱鼍坝闷饋磉€是很給力的!
附帶一個(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ù)名的方法,本文寫的不好還請大家見諒,歡迎大家提出寶貴意見。
- Javascript自執(zhí)行匿名函數(shù)(function() { })()的原理淺析
- JavaScript中Function函數(shù)與Object對象的關(guān)系
- JavaScript基礎(chǔ)篇(3)之Object、Function等引用類型
- js立即執(zhí)行函數(shù): (function ( ){})( ) 與 (function ( ){}( )) 有什么區(qū)別?
- seajs加載jquery時(shí)提示$ 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實(shí)現(xiàn)餅圖,環(huán)圖,玫瑰圖的繪制
這篇文章主要為大家介紹了如何利用D3.js中的d3.pie和d3.arc實(shí)現(xiàn)餅圖、環(huán)圖和玫瑰圖的繪制,文中的實(shí)現(xiàn)方法講解詳細(xì),感興趣的可以嘗試一下2022-11-11
javascript簡單進(jìn)制轉(zhuǎn)換實(shí)現(xiàn)方法
這篇文章主要介紹了javascript簡單進(jìn)制轉(zhuǎn)換實(shí)現(xiàn)方法,涉及javascript字符串轉(zhuǎn)換與數(shù)值操作相關(guān)技巧,需要的朋友可以參考下2016-11-11
利用JavaScript實(shí)現(xiàn)防抖節(jié)流函數(shù)的示例代碼
在開發(fā)中我們經(jīng)常會遇到一些高頻操作,比如:鼠標(biāo)移動,滑動窗口,鍵盤輸入等等,節(jié)流和防抖就是對此類事件進(jìn)行優(yōu)化,降低觸發(fā)的頻率,以達(dá)到提高性能的目的。本文就教大家如何實(shí)現(xiàn)一個(gè)讓面試官拍大腿的防抖節(jié)流函數(shù),需要的可以參考一下2022-08-08
JavaScript切換搜索引擎的導(dǎo)航網(wǎng)頁搜索框?qū)嵗a
這篇文章主要介紹了javascript切換搜索引擎的導(dǎo)航網(wǎng)頁搜索框的實(shí)例代碼,非常不錯,具有參考借鑒價(jià)值 ,需要的朋友可以參考下2017-06-06
Uniapp自定義導(dǎo)航欄并自適應(yīng)機(jī)型的實(shí)現(xiàn)方法
Uniapp 是一款跨平臺開發(fā)框架,可以同時(shí)開發(fā)出可以在多個(gè)平臺上運(yùn)行的應(yīng)用,在開發(fā)過程中,我們常常需要自定義導(dǎo)航欄來滿足 UI 設(shè)計(jì)的需求,本文將介紹如何在 Uniapp 中自定義導(dǎo)航欄并自適應(yīng)不同機(jī)型的屏幕大小,需要的朋友可以參考下2023-09-09
javascript中方便增刪改cookie的一個(gè)類
把jquery.cookie.js改了一下,改成了純javascript版本,以備我以后項(xiàng)目只需,增加了一個(gè)得到頁面全部cookie鍵值的功能2012-10-10

