Maison > interface Web > js tutoriel > Explication détaillée de la façon d'obtenir le nom de la fonction et l'instance de la méthode de paramètre en javascript

Explication détaillée de la façon d'obtenir le nom de la fonction et l'instance de la méthode de paramètre en javascript

伊谢尔伦
Libérer: 2017-07-21 10:58:23
original
5751 Les gens l'ont consulté

1. Trois méthodes d'implémentation pour obtenir des noms de fonctions

Exemple 1 :

Une méthode vue dans le guide faisant autorité js :

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

Exemple 2 :

Si la fonction actuelle est une fonction nommée, son nom est renvoyé. S'il s'agit d'une fonction anonyme, le nom de la variable de fonction attribuée est renvoyé. . S'il s'agit d'une fonction anonyme dans une fermeture, "anonyme" est renvoyé.

 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"
};
Copier après la connexion

Utilisation : Exécutez cette fonction à l'intérieur de la fonction à étudier, en passant un paramètre, qui est arguments.callee.

function  ee(){
      //+++++++++++++++++++++++++++++++++
      var fnname =getFnName(arguments.callee)
      //+++++++++++++++++++++++++++++++++
      alert(fnname)
    };
ee();
Copier après la connexion

Exemple 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());
Copier après la connexion

2. js récupère tous les paramètres de la fonction et parcourt tous les noms et valeurs d'attributs d'un objet Méthode

1. Récupérer tous les paramètres

function test(){
for(var i=0;i<arguments.length;i++) document.write(arguments[i]);
}
Copier après la connexion

2. objet

<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>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal