Ich habe eine Schwierigkeit, eine Funktion innerhalb einer anderen Funktion aufgerufen wird, wenn sein Name in einer Variable ist:JavaScript-Aufruf Funktion innerhalb einer Funktion von Variablennamen
var obj = {}
obj.f = function() {
var inner = {
a: function() {
function b() {
alert('got it!');
}
b(); // WORKS AS EXPECTED
x = 'b';
[x](); // DOESN'T WORK, NEITHER this[x]() window[x](), etc.
}
}
inner.a();
}
obj.f();
Ich habe versucht [x]()
mit unterschiedlichem Umfang Wegen prefixing aber so weit, ohne Erfolg. Die Suche nach vorhandenen Antworten ergab nichts. Es funktioniert mit this[x]()
, wenn b()
direkt im Inneren des Objekts platziert ist. Ich möchte b()
als Funktion innerhalb function a()
wegen des variablen Bereichs in function a()
behalten, andernfalls würde ich viele Parameter zu b()
übergeben müssen.
//// Frage wiederholen: Quentin lieferte eine elegantere Antwort in diesem Thread imo.
versuche 'window [x] .apply (this, [param1, param2])' [apply] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/ anwenden) – Catalin
@RaraituL 'b' wird s sein fertig, so können Sie das nicht tun –
@PaulS. Die Art und Weise, wie 'x' definiert ist, wird unter dem' window' Objekt – Catalin