bruant.d at gmail.com
Mon Dec 17 06:39:55 PST 2012
Le 17/12/2012 15:19, Anne van Kesteren a écrit :
> If down the road we want to allow for the theoretical possibility of
> sync Object.observe.
Which part of the platform needs a sync Object.observe?
I feel all platform APIs can be implemented with ES Proxies (WindowProxy
being one exception soon solved, I hope).
If the objects people wanted to observe were only objects they created,
a library on top of proxies would be enough for that. It's the necessity
to observe objects that the author doesn't create that makes
Object.observe a necessary API (and I'll be honest, it's also convenient
to have regardless)
> If we have types down the road as well (this
> might be a bit presumptuous), URLQuery could just be a MultiMap and
> whenever the MultiMap was mutated you'd update the associated URL
> synchronously (and potentially do other things, such as navigating to
> a URL). The latter would require synchronous change delivery. Or I
> suppose some kind of subclass that changes all the manipulation
> methods to also perform some kind of notification.
I don't understand what you mean by "types". And I also don't understand
what you can't implement in pure ES6 in what you've described.
I feel there are 2 different goals:
* Being able at all to implement browser APIs in ECMAScript (which is
close to being possible with Proxies. document.all being an exception).
* Being able to conveniently implement browser APIs in ECMAScript (which
may require the addition of a MultiMap) which is up for debate.
> I guess the problems here are that a) there's no MultiMap b) there's
> no types c) we want to reduce the burdon on developers for doing URL
> manipulation probably without waiting for a/b, but I rather not pull a
> Typed Array.
> Similarly, there's an idea to expose the path of a URL as an array of
> segments. Ideally this would be a type-constrained Array that when
> manipulated updates the associated URL.
I think you can create your own abstractions using proxies. For
instance, you can create proxies which accept only one type as property
values. I encourage to experiment and build what you need. If you face
things that are impossible to build with proxies, come share your
experience here. Likewise if you feel the current APIs make your
abstractions inefficient by design.
More information about the es-discuss