js獲取指定函式的形參程式碼例項
獲取函式形式引數的數目非常的簡單,使用函式物件的length屬性即可。
但是有可能可能需要更為精確一點,那就是獲取函式的形參具體是什麼。
下面就是一段能夠實現此功能的程式碼例項:
[JavaScript] 純文字檢視 複製程式碼function getFuncParameters(func){ if(typeof func=='function'){ var mathes = /[^(]+\(([^)]*)?\)/gm.exec(Function.prototype.toString.call(func)); if(mathes[1]){ var args=mathes[1].replace(/[^,\w]*/g, '').split(','); return args; } } } function done(x,y,z){ //code } console.log(getFuncParameters(done));
上面的程式碼實現了我們的要求,下面介紹一下此功能的實現過程。
一.程式碼註釋:
1.function getFuncParameters(func){},引數是要獲取引數的函式物件。
2.if(typeof func=='function'),判斷引數是不是函式。
3.var mathes = /[^(]+\(([^)]*)?\)/gm.exec(Function.prototype.toString.call(func)),這個程式碼是重點,下面做一下分解:Function.prototype.toString.call(func)此程式碼能夠獲取函式func的原始碼字串,前面的正規表示式可以匹配函式原始碼字串的函式名稱和括號中內容,包括括號。
4.if(mathes[1]),判斷匹配結果陣列中的第二元素是否存在,也就是正規表示式第一個字表示式是否匹配了內容,在上面的正規表示式中,第一個字表示式匹配的內容就是函式的引數內容,例如"x,y,z"。
5.var args=mathes[1].replace(/[^,\w]*/g, '').split(','),把非字母和逗號都地換位空字元,然後用逗號分隔生成一個陣列。6.return args,返回這個陣列。
二.相關閱讀:
1.exec()函式可以參閱正規表示式exec()函式一章節。
2.call()函式可以參閱js call()函式用法介紹一章節。
3.replace()函式可以參閱正規表示式使用replace()函式簡單介紹一章節。
4.split()函式可以參閱javascript split()函式使用介紹一章節。
相關文章
- js 函式中形參與實參的關係JS函式
- C++ 獲取指定的過載函式地址C++函式
- 獲取倒數第幾個元素程式碼例項
- day10:函式的實參&形參函式
- php中函式的實參和形參PHP函式
- css繪製圓形程式碼例項CSS
- python關於函式形參Python函式
- JS函式,物件,例項方法,物件方法理解JS函式物件
- React獲取元件例項React元件
- JavaScript取餘數程式碼例項JavaScript
- CSS3心形效果程式碼例項CSSS3
- JS 預編譯程式碼例項分析JS編譯
- Python的函式形參和返回值Python函式
- 函式形參與實參的體會與對比函式
- canvas繪製圓形鐘錶程式碼例項Canvas
- CSS3梯形效果程式碼例項CSSS3
- js獲取北京時間程式碼JS
- 獲取當前Tomcat例項的埠Tomcat
- jquery.idTabs.min.js選項卡程式碼例項jQueryJS
- 直播軟體原始碼,JS獲取指定長度的隨機字元原始碼JS隨機字元
- 127 PHP獲取網頁標題的3種實現方法程式碼例項PHP網頁
- 響應式佈局程式碼例項
- python獲取zabbix監控項圖形Python
- shell指令碼獲取函式返回值指令碼函式
- 遞迴函式例項大全遞迴函式
- 機器學習 - 似然函式:概念、應用與程式碼例項機器學習函式
- JS程式碼簡潔之道--函式JS函式
- Bash 指令碼例項:獲取符號連結的目標位置指令碼符號
- Nacos - 客戶端例項列表獲取客戶端
- 對比分析Java反射獲取例項的速度Java反射
- 拉取指定分支程式碼
- 例項物件和函式物件的區別物件函式
- 私有建構函式的物件建立例項函式物件
- python例項建立銷燬的函式整理Python函式
- 利用雲函式來實現獲取特定路徑+引數的小程式碼函式
- PostgreSQL 函式獲取表DDLSQL函式
- 如何透過AST樹去獲取JS函式引數名ASTJS函式
- JS陣列at函式(獲取最後一個元素的方法)介紹JS陣列函式
- JS基礎_獲取元素的樣式JS