Eine Zeichenfolge classname
vorausgesetzt, möchte ich dynamisch eine neue JavaScript-Funktion erstellen, die nach dieser Zeichenfolge benannt ist, die zum Instanziieren von Objekten verwendet werden kann.
Ich habe versucht, eval()
zu verwenden, aber aus irgendeinem Grund erscheint die angegebene Funktion nicht im globalen Bereich (Fenster).
Gibt es eine Möglichkeit, dynamisch eine neue Funktion zu erstellen, die nach einem String benannt ist?
Oder geben Sie mir eine Möglichkeit, auf die erstellte Funktion zu verweisen, nachdem Sie sie über eval
erstellt haben. Interessanterweise erscheint es als eine lokale Variable, wenn ich es in Safari debugge.
Aktualisierung:
Verstanden! Natürlich ist es offensichtlich, ich benutze eval
erneut, um die Instanz zu erstellen:
Dies sollte in meinem Fall funktionieren, da ich nur eine Instanz der Klasse direkt nach der Deklaration erstellen muss. Für den allgemeinen Fall siehe Pointy's Antwort.
Ja:
%Vor% Nun, ehrlich gesagt, das ist nicht genau das, was Sie versucht haben, aber es ist ziemlich nah. Wenn Sie eine Funktion über einen function
Ausdruck auf diese Weise und ohne Namen instanziieren, kann die Funktion nicht auf sich selbst verweisen, außer über den Namen im äußeren Bereich (in diesem Fall den globalen Bereich) ).
Wenn das wichtig ist, können Sie Folgendes tun: Erstellen Sie die Funktion mit einem "internen" internen Namen, und weisen Sie sie dann dem globalen Namen zu:
%Vor% Dies ist zwar im Wesentlichen das gleiche wie eval()
, aber es wird die Funktion in der Domäne der aktuellen Seite registrieren. Sie können dieses Skriptelement später entfernen oder für andere Funktionen wiederverwenden.
Tags und Links javascript class function