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