>  기사  >  웹 프론트엔드  >  자바스크립트에서 함수 이름과 매개변수 메서드 인스턴스를 얻는 방법에 대한 자세한 설명

자바스크립트에서 함수 이름과 매개변수 메서드 인스턴스를 얻는 방법에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-07-21 10:58:235736검색

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(&#39;\r\n&#39;);
    return _tempArr[_tempArr.length - 1].replace(/(var)|(\s*)/g, &#39;&#39;).replace(/=/g, &#39;&#39;);
   }
   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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.