用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。
相關文章
- 【程式碼】--庫函式學習 ftp通訊 相關函式FTP
- MySQL 字串擷取相關函式總結MySql字串函式
- 字串的相關函式字串函式
- js獲取北京時間程式碼JS
- 獲取評論相關的欄位值一段php程式碼PHP
- shell指令碼獲取函式返回值指令碼函式
- JS程式碼簡潔之道--函式JS函式
- Win32 API CreateCompatibleDC 函式的相關應用Win32API函式
- SAP PP相關函式函式
- 物件及函式相關物件函式
- 字串相關函式的實現字串函式
- 利用雲函式來實現獲取特定路徑+引數的小程式碼函式
- PostgreSQL 函式獲取表DDLSQL函式
- 如何透過AST樹去獲取JS函式引數名ASTJS函式
- JS陣列at函式(獲取最後一個元素的方法)介紹JS陣列函式
- JS基礎_獲取元素的樣式JS
- js的call函式”原始碼”JS函式原始碼
- Python之函式的相關介紹Python函式
- ES6 函式相關函式
- 【Spring Boot】使用JDBC 獲取相關的資料Spring BootJDBC
- 獲取app版本號相關資訊APP
- 使用Python獲取ECS相關資訊Python
- 關於 Date 函式獲取各類時間/日期/天數函式
- python3 堆相關函式的使用Python函式
- CodeIgniter框架之url相關函式框架函式
- 【Vue原理】Diff - 原始碼版 之 相關輔助函式Vue原始碼函式
- 原生js和jQ獲取視窗寬高及捲軸的方法和函式JS函式
- Node.js相關程式碼缺包怎麼辦?Node.js
- 【C語言】常用的字串函式及相關函式的自我實現C語言字串函式
- HTTP相關的應用程式HTTP
- C++ 獲取指定的過載函式地址C++函式
- 用js獲取當前月份的天數JS
- 學習PHP中的URL相關操作函式PHP函式
- C語言相關的基礎字串函式C語言字串函式
- 關於 js 中的回撥函式 callbackJS函式
- interrupt結構體和相關函式結構體函式
- PG wal日誌LSN相關函式函式
- FreeRTOS-01-任務相關函式函式
- tensorflow相關函式學習總結函式