Save Object.observe()! (please) + make WeakMap/WeakSet observable.

Andrea Giammarchi andrea.giammarchi at gmail.com
Tue Nov 3 16:26:07 UTC 2015


That would make functional-programming-oriented developers wining forever
about such monstrosity in  specs ... I'd personally love such possibility!

Regards

On Tue, Nov 3, 2015 at 2:41 PM, Matthew Robb <matthewwrobb at gmail.com> wrote:

> 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.
>
>
> - Matthew Robb
>
> On Tue, Nov 3, 2015 at 3:20 AM, Tom Van Cutsem <tomvc.be at gmail.com> wrote:
>
>>
>> 2015-11-02 23:34 GMT+01:00 Coroutines <coroutines at gmail.com>:
>>>
>>> I come from Lua.  In Lua we make proxy objects with metamethods.  You
>>> create an empty table/object and define a metatable with a __index and
>>> __newindex to catch accesses and changes when a key/property doesn't
>>> exist.  I would primarily use this in sandboxes where I wanted to
>>> track the exact series of operations a user was performing to modify
>>> their environment (the one I'd stuck them in).
>>
>>
>> For this type of use case, you can use an ES6 Proxy <
>> https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Proxy>.
>> You can think of the proxy handler's methods as the 'metamethods' of the
>> proxy object.
>>
>> 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.
>>
>> 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.
>>
>> Cheers,
>> Tom
>>
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>>
>>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20151103/e9cf079c/attachment.html>


More information about the es-discuss mailing list