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(/functions*([^(]*)(/)[1]
}
Beispiel 2:
Wenn es sich bei der aktuellen Funktion um eine benannte Funktion handelt, 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]; Funktion, übergeben Sie einen Parameter, nämlich arguments.callee function ee(){
//
var fnname =getFnName(arguments .callee)
//
alarm(fnname)
};
ee();
Code kopieren
Der Code lautet wie folgt:
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)
return _text.match(/^functions*([^(] ). *rn/ )[1];
}
}
}
function a()
{
return getFuncName(arguments.callee);
}
var b = function ()
{
return getFuncName(arguments.callee);
}
window.alert(a());
window.alert(b());
Es gibt eine weitere Situation, die mit der oben genannten Methode nicht gelöst werden kann. Ich hoffe, jemand, der eine Lösung hat, kann mir einen Rat geben.
Code kopieren
Der Code lautet wie folgt: function()
{
return getFuncName(arguments.callee);
}
} window.alert(x.run()); In diesem Fall kann der Name der Funktion nicht abgerufen werden;
2. js-Methode zum Abrufen aller Parameter einer Funktion und zum Durchlaufen aller Attributnamen und -werte eines Objekts
1. Alle Parameter abrufen
Kopieren Sie den Code
Der Code lautet wie folgt:
Funktionstest(){
for(var i=0;i
document.write(arguments[i]);
}
2. Methode zum Durchlaufen aller Attributnamen und -werte eines Objekts