Heim  >  Artikel  >  Web-Frontend  >  Ausführliche Erklärung, wie man Funktionsnamen und Parametermethodeninstanzen in Javascript erhält

Ausführliche Erklärung, wie man Funktionsnamen und Parametermethodeninstanzen in Javascript erhält

伊谢尔伦
伊谢尔伦Original
2017-07-21 10:58:235736Durchsuche

1. Drei Implementierungsmethoden zum Erhalten von Funktionsnamen

Beispiel 1:

Eine Methode, die im maßgeblichen js-Leitfaden zu sehen ist:

Function.prototype.getName = function(){
    return this.name || this.toString().match(/function\s*([^(]*)\(/)[1]
}

Beispiel 2:

Wenn die aktuelle Funktion eine benannte Funktion ist, wird ihr Name zurückgegeben. Wenn es sich um eine anonyme Funktion handelt, wird der zugewiesene Funktionsvariablenname zurückgegeben . Wenn es sich um eine anonyme Funktion in einem Abschluss handelt, wird „anonymous“ zurückgegeben.

 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"
};

Verwendung: Führen Sie diese Funktion innerhalb der zu untersuchenden Funktion aus und übergeben Sie dabei einen Parameter, nämlich arguments.callee.

function  ee(){
      //+++++++++++++++++++++++++++++++++
      var fnname =getFnName(arguments.callee)
      //+++++++++++++++++++++++++++++++++
      alert(fnname)
    };
ee();

Beispiel 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 ruft alle Parameter der Funktion ab und durchläuft alle Attributnamen und -werte eines Objekts Methode

1. Alle Parameter abrufen

function test(){
for(var i=0;i<arguments.length;i++) document.write(arguments[i]);
}

2. Methode zum Durchlaufen aller Attributnamen und -werte eines Objekt

<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>

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung, wie man Funktionsnamen und Parametermethodeninstanzen in Javascript erhält. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn