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

Isiah Meadows isiahmeadows at gmail.com
Tue Nov 3 22:30:52 UTC 2015


I'm neutral.

On Tue, Nov 3, 2015, 15:43 Matthew Robb <matthewwrobb at gmail.com> wrote:

> Isiah, could you elaborate some? I can't quite tell if you are expressing
> support for my suggestion or not. Thanks!
> On Nov 3, 2015 12:13 PM, "Isiah Meadows" <isiahmeadows at gmail.com> wrote:
>
>> Lol... I feel I'm in an insane minority that can work relatively
>> productively in Java 7 and Haskell both.
>>
>> Of course, I have a preference, but that preference lies around that of
>> OCaml and Clojure. It's more the expression-based, impure functional
>> languages that I'm most productive in. Observing mutations that I react to
>> using immutable data structures. Sounds very odd and/or blasphemous to
>> some, but that's what I like. MVC models like that are how Mithril and
>> similar smaller frameworks have started to get some attention. It prefers
>> highly local state, and an observed object would be a great state model for
>> that.
>>
>> And on that note, I'm going to stop before I derail the topic too far.
>>
>> On Tue, Nov 3, 2015, 11:26 Andrea Giammarchi <andrea.giammarchi at gmail.com>
>> wrote:
>>
>>> 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
>>>>
>>>>
>>> _______________________________________________
>>> 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/c003567c/attachment-0001.html>


More information about the es-discuss mailing list