On 21 August 2013 15:41, Erik Arvidsson <[email protected]> wrote:
> One way to think of it is that the with is acting on a view of the
> object that does not have the blacklisted properties. This can be
> implemented using proxies. I'll leave that as an exercise.
I see.
>> * How would it interact with mutation?
>
> Another hole we didn't cover. Here is my proposal:
>
> The @@unscopable is only accessed once, when the object environment
> record is created.
Hm, that would seem rather inconsistent with the way adding/removing
properties can dynamically change the domain of a 'with'. Consider:
function safeenrich(o) {
o.a = 1
o[@@unscopable] = o[@@unscopable] || []
o[@@unscopable].push('a')
}
let o = {}
let a = 0
with (o) {
a // 0
safeenrich(o)
a // 1
}
/Andreas
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss