Ich weiß, dass die Verwendung der mit -Anweisung nicht empfohlen wird in Javascript und ist in ECMAScript 5 verboten, erlaubt es aber, einige nette DSLs in Javascript zu erstellen.
Zum Beispiel CoffeeKup -Template Engine und die Zappa Internet DSL. Diese verwendet einige sehr weird Scoping-Methoden mit der mit -Anweisung, um DSLish-Gefühl für sie zu erreichen.
Gibt es Zukunft mit der mit -Anweisung und diesen Arten von DSLs?
Kann dieser DSL-Effekt ohne die with -Anweisung erreicht werden?
with
, das in ECMAScript 5 "verboten" ist, ist ein häufiges Missverständnis .
Nur im strikten Modus von ECMAScript 5 - with
statement ist ein Syntaxfehler. Daher können Sie% ce_de% in vollständig ECMAScript 5-kompatiblen Implementierungen verwenden, solange sie in nicht-striktem Code (oder schlampig, wie Crockford es nennt) vorkommen. Es wird nicht schön für die Leistung sein (da die bloße Anwesenheit von with
oft verschiedene Optimierungen in modernen Engines umbringt), aber es wird funktionieren.
Zukünftige Versionen von ECMAScript basieren sehr wahrscheinlich auf striktem Modusverhalten, obwohl wahrscheinlich auch Opt-In sein wird. Die Einhaltung des strikten Modus ist sicherlich eine gute Idee, wenn es darum geht, Ihre Skripte in Zukunft zu verbessern.
Um Epelis Frage zu beantworten, werfen Sie einen Blick auf CoffeeMugg , was macht, was CoffeeKup tut, aber Adrien's Technik benutzt. Es verwendet this.
anstelle der with
-Anweisung.
Tags und Links javascript coffeescript dsl ecmascript-5