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(/functions*([^(]*)(/)[1]
}
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 :_callee.length;
_callee = _callee.substring (0,comb);
var name = _callee.match(/^function([^(] ?)(/);
if(name && name[1]){
return nom[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] ; transmettez un paramètre, qui est arguments.callee function ee(){
//
var fnname =getFnName(arguments. .callee)
//
alert(fnname)
};
ee();
Copier le code
Le code est le suivant :
fonction 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)
return _text.match(/^functions*([^(] ). *rn/ )(1];
}
}
}
fonction a()
{
return getFuncName(arguments.callee);
>
var b = function ()
{
return getFuncName(arguments.callee);
>
window.alert(a());
window.alert(b());
Il existe une autre situation qui ne peut pas être résolue par la méthode ci-dessus. J'espère que quelqu'un qui a une solution pourra vous donner quelques conseils.
Copier le code
Le code est le suivant : function()
{
return getFuncName(arguments.callee);
}
} window.alert(x.run()); Dans ce cas, le nom de la fonction ne peut pas être obtenu
2. méthode js pour obtenir tous les paramètres d'une fonction et parcourir tous les noms d'attributs et valeurs d'un objet
1. Obtenez tous les paramètres Copiez le code
Le code est le suivant :
test de fonction(){
for(var i=0;i
document.write(arguments[i]);
}
2. Méthode pour parcourir tous les noms d'attributs et valeurs d'un objet