How to escape implicit 'with (this)' of a method body
Dave Herman
dherman at ccs.neu.edu
Thu Jul 31 05:24:06 PDT 2008
> We should take this problem seriously. ...
>
> Dynamic scope is very bad.
Specifically:
- Classes are supposed to provide integrity, but dynamic scope makes the
internals of code brittle; any variable reference inside the
implementation could be subverted by the seemingly innocuous insertion
of a property.
- Dynamic dispatch has a reasonably understandable cost model, but only
if it's confined to explicit property references. With dynamic scope,
any variable reference could potentially be very expensive.
- Generally, code within a `with' block is brittle and hard to
understand, and as Tucker says, the implicit `this.' means that all code
inside class methods is within a `with' block... this means that all
code inside class methods is brittle!
- In the past, this has been enough for many programmers to deprecate
all use of `with' -- we should certainly hope to avoid the same
happening for classes.
Dave
More information about the Es4-discuss
mailing list