An update on Object.observe

Benoit Marchant marchant at mac.com
Mon Nov 2 19:43:45 UTC 2015


Agreed, another aspect that I never understood, and was a problem with Angular 1.0 bindings. At least when doing it in-line, bindings don’t introduce a new flow compared to what a developer’s custom equivalent code would do.

Benoit

> On Nov 2, 2015, at 11:35 AM, Brian Chin <brianchin at google.com> wrote:
> 
> Regarding the Polymer 1.0 situation, as a client the new system seems to be simpler. The core aspect is that now when you modify a property, the resulting changes propagate instantly. O.o required update callbacks to be executed on a new microtask after the associated field/item was modified. In my experience, the instant propagation is easier to reason about for the end user.
> 
> On Mon, Nov 2, 2015 at 11:31 AM, Benoit Marchant <marchant at mac.com <mailto:marchant at mac.com>> wrote:
> Hi Adam,
> 
> Just sharing my $0.02 : I implemented a two-way binding system in my first JavaScript framework at Apple in 2007, designed as a layer on top of a property change observing API, like in Cocoa, and that’s still our design in Montage today. I’ve never felt the need nor understood why observing changes on a whole object were useful for bindings, and without measuring, I was concerned (maybe wrongly) by the performance overhead of doing so.
> 
> Thanks for the update.
> 
> Benoit
> 
>> On Nov 2, 2015, at 10:27 AM, Adam Klein <adamk at chromium.org <mailto:adamk at chromium.org>> wrote:
>> 
>> Over three years ago, Rafael Weinstein, Erik Arvidsson, and I set out to design and implement what we believed to be the primitive underlying the data-binding system of MDV ("model-driven views"). We prototyped an implementation in a branch of V8, then got agreement from the V8 team to build a real version upstream, while pushing Object.observe ("O.o") as a part of the upcoming ES7 standard and working with the Polymer team to build their data-binding system on top of O.o.
>> 
>> Three years later, the world has changed in a variety of ways. While other data-binding frameworks (such as Ember and Angular) showed interest, it was difficult to see how they could evolve their existing model to match that of O.o. Polymer rewrote from the ground up for its 1.0 release, and in that rebuilding did not utilize O.o. And React's processing model, which tries to avoid the mutable state inherent in data-binding systems, has become quite popular on the web.
>> 
>> After much discussion with the parties involved, I plan to withdraw the Object.observe proposal from TC39 (where it currently sits at stage 2 in the ES spec process), and hope to remove support from V8 by the end of the year (the feature is used on 0.0169% of Chrome pageviews, according to chromestatus.com <http://chromestatus.com/>).
>> 
>> For developers who have been experimenting with O.o and are seeking a transition path, consider using a polyfill such as https://github.com/MaxArt2501/object-observe <https://github.com/MaxArt2501/object-observe> or a wrapper library like https://github.com/polymer/observe-js <https://github.com/polymer/observe-js>.
>> 
>> - Adam
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org <mailto:es-discuss at mozilla.org>
>> https://mail.mozilla.org/listinfo/es-discuss <https://mail.mozilla.org/listinfo/es-discuss>
> 
> 
> 
> 
> 
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org <mailto:es-discuss at mozilla.org>
> https://mail.mozilla.org/listinfo/es-discuss <https://mail.mozilla.org/listinfo/es-discuss>
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20151102/7b654ed3/attachment.html>


More information about the es-discuss mailing list