es auf dem Weg hängt die Funktion zugewiesen wurde. Nehmen Blick auf diese:
function test() { alert('test'); }
window.onkeydown = test;
window.onkeydown.toString();
Ausgang ist function test() { alert('test'); }
und Sie diese Zeichenfolge analysieren kann seinen Namen als String zu erhalten:
var fnsting = window.onkeydown.toString();
// use regexp to extract name
var name = fnsting.match(/function\s*(.*?)\s*\(/)[1]; // name is 'test'
(es wird wieder Allways Namen von Funktionsdefinition (wenn Sie dies assing Funktion auf andere Variable .toString()
liefert immer die gleiche Zeichenfolge)
aber folgendes Beispiel:
window.onkeydown = function() { alert('test'); };
window.onkeydown.toString();
wird function() { alert('test'); }
drucken, da diese Funktion anonym ist, so dass Sie ihren Namen nicht erhalten können.
Darüber hinaus, wenn Sie Funktion wie folgt erstellen:
var test = function() { alert('test'); };
window.onkeydown = test;
window.onkeydown.toString();
und Ausgang wird function() { alert('test'); }
weil bei der Erstellung Funktion sein nicht Namen haben (es war Funktion Ausdruck Variablen zugewiesen), so können Sie auch nicht extrahieren seinen Namen.
Aber man kann einfach Vergleich machen:
function foo() { alert('foo'); }
var bar = function() { alert('bar'); };
window.onkeydown = foo;
// try to find function
if (window.onkeydown === foo) {
alert('this is foo');
} else if (window.onkeydown === bar) {
alert('this is bar');
}
// or like this:
var handler = window.onkeydown;
if (handler === foo) {
alert('this is foo');
} else if (handler === bar) {
alert('this is bar');
}
Aber es wird auch mit diesem Thema, denn wenn man diese anonyme Funktion wie zuweisen:
window.onkeydown = function() { alert('test'); };
Sie haben keinen anderen Bezug zu dieser Funktion (es ist nicht zu anderen Variablen zugeordnet), so dass Sie es nicht mit anderen Funktionen vergleichen können (Vergleich gibt immer false zurück).
Was möchten Sie tun? – Thilo
document.onkeydown = aktuelle Funktion (ich kenne den Namen nicht) document.onkeydown = meine Funktion Ich möchte document.onkeydown auf die aktuelle Funktion einstellen, die ich vorher geändert habe. –
Kannst du das bitte in Pseudocode schreiben? – Niko