用JS獲取函式相關的程式碼
本文主要介紹了JavaScript獲取函式名稱、函式引數以及物件屬性的程式碼,其中包括了獲取函式名稱的3種實現方法,和用JS獲取函式的所有引數並且遍歷某個物件所有屬性的名稱和值的方法。
獲取函式名稱的3種實現方法:
在《JavaScript權威指南》中看到的一個方法:
Function.prototype.getName = function(){ return this.name || this.toString().match(/function\s*([^(]*)\(/)[1] }
如果當前函式是有名函式,則返回其名字,如果是匿名函式則返回被賦值的函式變數名,如果是閉包中匿名函式則返回
anonymous
,程式碼如下:var getFnName = function(callee){ var _callee = callee.toString().replace(/[\s\?]*/g,""), comb = _callee.length >= 50 ? 50 :_callee.length; _callee = _callee.substring(0,comb); var name = _callee.match(/^function([^\(]+?)\(/); if(name && name[1]){ return name[1]; } var caller = callee.caller, _caller = caller.toString().replace(/[\s\?]*/g,""); var last = _caller.indexOf(_callee), str = _caller.substring(last-30,last); name = str.match(/var([^\=]+?)\=/); if(name && name[1]){ return name[1]; } return "anonymous" };
使用
:
在要調查的函式內部執行此函式,傳入一個引數,為arguments.callee
,程式碼如下:function ee(){ //+++++++++++++++++++++++++++++++++ var fnname =getFnName(arguments.callee) //+++++++++++++++++++++++++++++++++ alert(fnname) }; ee();
程式碼如下:
function getFuncName(_callee) { var _text = _callee.toString(); var _scriptArr = document.scripts; for (var i=0; i<_scriptArr.length; i++) { var _start = _scriptArr[i].text.indexOf(_text); if (_start != -1) { if (/^function\s*\(.*\).*\r\n/.test(_text)) { var _tempArr = _scriptArr[i].text.substr(0, _start).split('\r\n'); return _tempArr[_tempArr.length - 1].replace(/(var)|(\s*)/g, '').replace(/=/g, ''); } else return _text.match(/^function\s*([^\(]+).*\r\n/)[1]; } } } function a() { return getFuncName(arguments.callee); } var b = function() { return getFuncName(arguments.callee); } window.alert(a()); window.alert(b());
JS獲取函式的所有引數和遍歷某個物件所有的屬性名稱和值的方法:
獲取所有引數,程式碼如下:
function test(){ for(var i=0;i<arguments.length;i++) document.write(arguments[i]); }
遍歷某個物件所有的屬性名稱和值的方法,程式碼如下:
<script language="javascript"> var obj = new Object(); obj.myname = "我是物件"; obj.pro2 = "23"; obj.pro3 = "abcdeg"; php程式設計師站 for (items in obj){ document.write("屬性:"+items+"的值是 ("+ obj[items] +")"); document.write("<br>"); } </script>
本文為Anyforweb技術分享部落格,需要了解網站建設及更多web應用相關資訊,請訪問anyforweb.com。
相關文章
- js獲取指定函式的形參程式碼例項JS函式
- C語言getgroups()函式:獲取組程式碼函式C語言函式
- 用前面建立的函式獲取物件函式物件
- MySQL 字串擷取相關函式總結MySql字串函式
- 字串的相關函式字串函式
- 獲取 NodeJS 程式退出碼NodeJS
- 獲取評論相關的欄位值一段php程式碼PHP
- 獲取網路卡的相關資訊
- shell指令碼獲取函式返回值指令碼函式
- linux關於readlink函式獲取執行路徑的小程式Linux函式
- js獲取瀏覽器相關資訊簡單介紹JS瀏覽器
- 物件及函式相關物件函式
- SAP PP相關函式函式
- Python 函式相關Python函式
- js函式作為函式的引數程式碼例項JS函式
- 字串相關函式的實現字串函式
- js獲取事件的型別程式碼例項JS事件型別
- 正規表示式☞相關函式函式
- 匿名函式和閉包的相關應用詳解函式
- 獲取app版本號相關資訊APP
- JS程式碼簡潔之道--函式JS函式
- PostgreSQL 函式獲取表DDLSQL函式
- 關於獲取事件相應的結果事件
- 視窗屬性的獲取函式函式
- 利用雲函式來實現獲取特定路徑+引數的小程式碼函式
- ES6 函式相關函式
- 3.3 數學相關函式函式
- SQL 日期格式相關函式SQL函式
- 函式組:CSAP(BOM 相關)函式
- Js獲取元素相對適口位置JS
- js獲取當前月份例項程式碼JS
- js獲取事件源物件程式碼例項JS事件物件
- js讓文字框獲取焦點程式碼JS
- js獲取主機域名程式碼例項JS
- js獲取元素的實際尺寸程式碼例項JS
- Win32 API CreateCompatibleDC 函式的相關應用Win32API函式
- js獲取數字中的最小數字程式碼程式碼例項JS
- 關於Oracle取整的函式Oracle函式