Mit ein bisschen Weitsicht können Sie das ganz einfach tun und schützen Sie sich vor der Verwendung von eval
. Behalten Sie eine Liste der Klassen bei, die Sie mit dem Namen instanziieren möchten:
und verwenden Sie dann Ihre Nachschlagetabelle anstelle von eval
:
Wenn Sie class Dog
sagen, erhalten Sie eine lokale Variable namens Dog
:
und es gibt keine Möglichkeit, auf eine lokale JavaScript-Variable zuzugreifen, es sei denn, Sie speichern sie an einem Ort, auf den Sie mit dem Namen zugreifen können. Beachten Sie auch, dass eval
nicht funktioniert, wenn Sie Dog
in einer CoffeeScript-Datei definieren und auf eine andere zugreifen möchten. CoffeeScript verpackt jede Datei in self -Anonyme Funktion ausführen, um den Gültigkeitsbereich der Variablen einzuschränken :
Die gesamte CoffeeScript-Ausgabe ist in eine anonyme Funktion eingeschlossen:
(function(){ ... })()
; Dieser Sicherheits-Wrapper, kombiniert mit der automatischen Generierung des Schlüsselwortsvar
, macht es äußerst schwierig, den globalen Namensraum aus Versehen zu verschmutzen.Wenn Sie Top-Level-Variablen für andere Skripte erstellen möchten, hängen Sie sie als Eigenschaften an window oder an das exports -Objekt in CommonJS an.
Tags und Links coffeescript