<div dir="ltr">For those interested in using Proxies in the future, here are the appropriate links to the two remaining holdouts (FF and MS Edge are already there):<div><br></div><div>Safari/Webkit/JSC:</div><div><br></div><div><a href="https://bugs.webkit.org/show_bug.cgi?id=35731">https://bugs.webkit.org/show_bug.cgi?id=35731</a><br></div><div><br></div><div>Chrome/V8:</div><div><br></div><div><a href="https://code.google.com/p/v8/issues/detail?id=1543">https://code.google.com/p/v8/issues/detail?id=1543</a><br></div><div><br></div><div>Bug the appropriate owners ;-).</div><div><br></div><div>Cheers,</div><div><br></div><div>- Bill</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Nov 3, 2015 at 4:40 PM, Brendan Eich <span dir="ltr"><<a href="mailto:brendan.eich@gmail.com" target="_blank">brendan.eich@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Ah yes, the Smalltalk "become:" message, something that inspired SpiderMonkey's "Brain Transplants" -- see the [1] footnote at <a href="https://brendaneich.com/2010/11/proxy-inception/" target="_blank">https://brendaneich.com/2010/11/proxy-inception/</a>, and of course the bugzilla link, which leads to this:<div><br></div><div><span><div><span><a href="https://bugzilla.mozilla.org/user_profile?user_id=1214" target="_blank">
  <img align="middle" height="32" border="0" width="32" src="https://secure.gravatar.com/avatar/c936d5fc7ef09504480b9d8aafb7e8a0?d=mm&size=64"></a>
          <span><span>Brendan Eich [:brendan]</span>
</span>
       </span>

        <span>
        </span>

        <span>
          2010-07-19 17:53:44 PDT
        </span>

      </div>




<pre>Burns:    [saws off the top of Homer's head.  No blood, very clean.
           The top of Homer's head rolls away.]
          Smithers, hand me that ice-cream scoop.
Smithers: Ice-cream scoop?!
Burns:    Dammit, Smithers, this isn't rocket science, it's brain surgery!

("If I Only Had a Brain", from "Treehouse of Horror II")

/be</pre></span></div><div><div class="h5"><div><br></div><div><div><div class="gmail_quote"><div dir="ltr">On Tue, Nov 3, 2015 at 6:42 AM Matthew Robb <<a href="mailto:matthewwrobb@gmail.com" target="_blank">matthewwrobb@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:trebuchet ms,sans-serif;color:rgb(68,68,68)">I probably have a terrible understanding of how this all works at a low level but I feel like a potential solution would be a method of "upgrading" a non-proxy object to be a proxy. The reason accessors are being used as they are now is because you can retro fit them. Maybe what I am suggesting is essentially like swapping out the internal pointer of an object with another object (such as the way live module bindings work). In this way you might upgrade an existing object to behave like a proxy.<br></div></div><div class="gmail_extra"></div><div class="gmail_extra"><br clear="all"><div><div><div dir="ltr"><div><br></div>- Matthew Robb</div></div></div></div><div class="gmail_extra">
<br><div class="gmail_quote">On Tue, Nov 3, 2015 at 3:20 AM, Tom Van Cutsem <span dir="ltr"><<a href="mailto:tomvc.be@gmail.com" target="_blank">tomvc.be@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote"><span>2015-11-02 23:34 GMT+01:00 Coroutines <span dir="ltr"><<a href="mailto:coroutines@gmail.com" target="_blank">coroutines@gmail.com</a>></span>:<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
I come from Lua.  In Lua we make proxy objects with metamethods.  You<br>
create an empty table/object and define a metatable with a __index and<br>
__newindex to catch accesses and changes when a key/property doesn't<br>
exist.  I would primarily use this in sandboxes where I wanted to<br>
track the exact series of operations a user was performing to modify<br>
their environment (the one I'd stuck them in).</blockquote><div><br></div></span><div>For this type of use case, you can use an ES6 Proxy <<a href="https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Proxy" target="_blank">https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Proxy</a>>. You can think of the proxy handler's methods as the 'metamethods' of the proxy object.</div><div><br></div><div>What O.o would provide beyond Proxy is the ability to observe changes to already pre-existing objects. However, since you mention you'd start with an empty table/object, you should be able to create a fresh Proxy and use that to trace all property accesses.</div><div><br></div><div>Proxies are particularly well-suited when you want to sandbox things, since you should be in control of the sandboxed environment anyway and can set-up proxies to intermediate. O.o is particularly well-suited to scenarios where there are already plenty of pre-existing objects and you don't know ahead of time which ones to observe and which not.</div><div><br></div><div>Cheers,</div><div>Tom</div></div></div></div>
<br>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br></div>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</blockquote></div></div></div></div></div></div>
<br>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br></div>