Heim > Web-Frontend > js-Tutorial > Hauptteil

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

伊谢尔伦
Freigeben: 2017-07-21 10:58:23
Original
5711 Leute haben es durchsucht

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]
}
Nach dem Login kopieren

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"
};
Nach dem Login kopieren

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();
Nach dem Login kopieren

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());
Nach dem Login kopieren

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]);
}
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!