[whatwg] Object.observe()able properties on the web platform

[Spawning new thread on public-script-coord; whatwg to bcc]

From: whatwg <whatwg-bounces@lists.whatwg.org> on behalf of Jonas Sicking <jonas@sicking.cc>

> On Wed, Aug 20, 2014 at 1:33 AM, Anne van Kesteren <annevk@annevk.nl> wrote:
>> On Wed, Aug 20, 2014 at 10:29 AM, Jonas Sicking <jonas@sicking.cc> wrote:
>>> FWIW, the web platform sorely needs a construct for "readonly state
>>> variable + event whenever the state changes". I.e. some form of
>>> observable which remembers the last produced value. I had hoped the
>>> Streams would get us closer to that, but the current definition seems
>>> to be too different.
>>
>> Isn't that Object.observe() with custom records produced by the
>> specific object you are defining for the property you want to enable
>> this for (in this case held, it seems like)?
>
> That's a good question. It'd be awesome if Object.observe() solved this problem for us.
>
> One thing that I'd worry about is that it'll be hard for authors to know which properties are observable, and which ones aren't. But maybe that's something we can live with.

Object.observe() is in my mind exactly what solves this problem.

Remember that it doesn't work out-of-the-box for getters. And, most DOM properties are clearly "getter-like" from an author perspective: i.e., besides that being their actual observable implementation, they also are usually getting some underlying part of the system that is not otherwise accessible; it is hard to imagine them as simple data properties which anyone can toggle. So IMO authors will bring the same expectations to DOM objects they do to regular objects: getters will be sometimes observable, but only if the implementation of that object has taken the time to make them so.

I think it would be a good idea to start working on additions to WebIDL to mark properties as observable, so that Chrome at least can start firing change records for them. I imagine this propagating to developer docs (MDN etc.) as some kind of "observable" annotation that authors will come, in time, to learn means they can Object.observe() that property.


Received on Saturday, 23 August 2014 00:46:01 UTC