Implementing membranes using proxies, and [[GetInheritance]]

Tom Van Cutsem at
Fri Sep 13 00:19:06 PDT 2013

2013/9/12 Mark S. Miller <erights at>

> Membranes need shadow targets, because of non-extensibility of objects and
> non-configurability of properties. This special case of
> no-invariants-anywhere is not JavaScript. Trying to do membranes without
> shadow targets is a useless exercise.

True, but by removing the invariant check on getPrototypeOf, a membrane
proxy can now avoid the cost of actually storing the wrapped prototype on
the shadow target until the real target becomes observably non-extensible
(which may never occur).

More generally, membranes always need to be set-up with shadow targets, but
they don't actually need to use them until the real target has some

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list