1. 함수 이름을 가져오는 세 가지 구현 방법
예 1:
JS 권위 가이드에 표시된 방법:
Function.prototype.getName = function(){ return this.name || this.toString().match(/function\s*([^(]*)\(/)[1] }
예 2:
현재 함수가 명명된 함수인 경우 이름을 반환하고, 익명 함수인 경우 할당된 함수 변수 이름을 반환하고, 클로저의 익명 함수인 경우 "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" };
사용법: 조사할 함수 내에서 이 함수를 실행하고 인수.callee라는 하나의 매개변수를 전달합니다.
function ee(){ //+++++++++++++++++++++++++++++++++ var fnname =getFnName(arguments.callee) //+++++++++++++++++++++++++++++++++ alert(fnname) }; ee();
예 3:
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());
2. js
1을 사용하여 함수의 모든 매개변수를 가져오고 객체의 모든 속성 이름과 값을 탐색하는 방법1. 2. 객체의 모든 속성 이름과 값에 대한 트래버스 메소드
function test(){ for(var i=0;i<arguments.length;i++) document.write(arguments[i]); }
위 내용은 자바스크립트에서 함수 이름과 매개변수 메서드 인스턴스를 얻는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!