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(); } }
【運行結(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)文章
window.setInterval()方法的定義和用法及offsetLeft與style.left的區(qū)別
window.setInterval()方法可以按照指定的周期執(zhí)行來執(zhí)行一段程序。周期是以毫秒為單位的,本文給大家介紹window.setInterval()方法的定義和用法,感興趣的朋友參考下2015-11-11D3.js實現(xiàn)餅圖,環(huán)圖,玫瑰圖的繪制
這篇文章主要為大家介紹了如何利用D3.js中的d3.pie和d3.arc實現(xiàn)餅圖、環(huán)圖和玫瑰圖的繪制,文中的實現(xiàn)方法講解詳細(xì),感興趣的可以嘗試一下2022-11-11javascript簡單進(jìn)制轉(zhuǎn)換實現(xiàn)方法
這篇文章主要介紹了javascript簡單進(jìn)制轉(zhuǎn)換實現(xiàn)方法,涉及javascript字符串轉(zhuǎn)換與數(shù)值操作相關(guān)技巧,需要的朋友可以參考下2016-11-11利用JavaScript實現(xiàn)防抖節(jié)流函數(shù)的示例代碼
在開發(fā)中我們經(jīng)常會遇到一些高頻操作,比如:鼠標(biāo)移動,滑動窗口,鍵盤輸入等等,節(jié)流和防抖就是對此類事件進(jìn)行優(yōu)化,降低觸發(fā)的頻率,以達(dá)到提高性能的目的。本文就教大家如何實現(xiàn)一個讓面試官拍大腿的防抖節(jié)流函數(shù),需要的可以參考一下2022-08-08JavaScript切換搜索引擎的導(dǎo)航網(wǎng)頁搜索框?qū)嵗a
這篇文章主要介紹了javascript切換搜索引擎的導(dǎo)航網(wǎng)頁搜索框的實例代碼,非常不錯,具有參考借鑒價值 ,需要的朋友可以參考下2017-06-06Uniapp自定義導(dǎo)航欄并自適應(yīng)機型的實現(xiàn)方法
Uniapp 是一款跨平臺開發(fā)框架,可以同時開發(fā)出可以在多個平臺上運行的應(yīng)用,在開發(fā)過程中,我們常常需要自定義導(dǎo)航欄來滿足 UI 設(shè)計的需求,本文將介紹如何在 Uniapp 中自定義導(dǎo)航欄并自適應(yīng)不同機型的屏幕大小,需要的朋友可以參考下2023-09-09