Erik Arvidsson (2013-08-02T20:25:06.000Z)
On Fri, Aug 2, 2013 at 4:02 PM, Domenic Denicola
<domenic at domenicdenicola.com> wrote:
> I know the answer will be obvious when I see it, but I can't quite remember ... why is it important that `O[privateSymbol]` not invoke the proxy?

We don't want to leak the privateSymbol to a proxy.

module 'foo' {
  var privateSymbol = ...;
  export function tag(object) {
    object[privateSymbol] = true;
  }
  export function hasTag(object) {
    return !!object[privateSymbol];
  }
}

If someone passes a proxy into tag/hasTag the privateSymbol object
must not be passed to the proxy handler.

-- 
erik
domenic at domenicdenicola.com (2013-08-02T20:51:38.491Z)
On Fri, Aug 2, 2013 at 4:02 PM, Domenic Denicola <domenic at domenicdenicola.com> wrote:
> I know the answer will be obvious when I see it, but I can't quite remember ... why is it important that `O[privateSymbol]` not invoke the proxy?

We don't want to leak the privateSymbol to a proxy.

```js
module 'foo' {
  var privateSymbol = ...;
  export function tag(object) {
    object[privateSymbol] = true;
  }
  export function hasTag(object) {
    return !!object[privateSymbol];
  }
}
```

If someone passes a proxy into `tag`/`hasTag` the `privateSymbol` object
must not be passed to the proxy handler.