Zukunft der With-Anweisung in Javascript

7

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?

    
Epeli 21.03.2011, 03:37
quelle

4 Antworten

9

with , das in ECMAScript 5 "verboten" ist, ist ein häufiges Missverständnis .

Nur im strikten Modus von ECMAScript 5 - , beachten Sie - 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.

    
kangax 21.03.2011, 05:28
quelle
10

In coffeescript gibt es einen netten Trick, um ausgefallene dsls zu behalten, ohne with zu benutzen:

%Vor%     
Adrien 21.03.2011 06:44
quelle
2

Warum nicht einfach eine Variable zuweisen, um auf das Objekt zu zeigen anstatt mit?

'mit' style:

%Vor%

'var' Stil:

%Vor%     
DanBUK 19.06.2011 21:23
quelle
1

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.

    
Jae Kwon 30.01.2012 02:50
quelle