[Spawning new thread on public-script-coord; whatwg to bcc] From: whatwg <whatwg-boun...@lists.whatwg.org> on behalf of Jonas Sicking <jo...@sicking.cc>
> On Wed, Aug 20, 2014 at 1:33 AM, Anne van Kesteren <ann...@annevk.nl> wrote: >> On Wed, Aug 20, 2014 at 10:29 AM, Jonas Sicking <jo...@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.