- From: Olli Pettay <Olli.Pettay@helsinki.fi>
- Date: Thu, 12 Jul 2012 12:18:58 +0300
- To: Yuval Sadan <sadan.yuval@gmail.com>
- CC: Jonas Sicking <jonas@sicking.cc>, Ryosuke Niwa <rniwa@webkit.org>, Boris Zbarsky <bzbarsky@mit.edu>, public-webapps@w3.org
On 07/12/2012 12:07 PM, Yuval Sadan wrote:
> I think we need to realize that a lot of the APIs that have been
> designed in the past aren't terribly good APIs.
>
> The IndexedDB API is rather new, and the manner in which it consistently uses event handlers on returned objects is rather innovative. The
> DOMTransaction object is more similar to that.
>
> In other words, I think it's more important to focus on what makes a
> good API, than what is consistent with other DOM APIs.
>
> Consistency has its value. Even if some is lacking, fixing it in some places and not in others might cause a jumble. Which is my feeling actually
> about the IndexedDB API. Adding more syntactical variations can lead to hectic code.
> However, I agree that it's not the primary concern.
>
> Something that I really liked about the old API was the fact that
> using it created very intuitive code. Basically you just write a class
> the way you normally would write a class, and then pass in your
> object:
>
> x = {
> someState: 0,
> apply: function() { this.someState++; this.modifyDOM(); },
> unapply: function() { this.subState--; this.modifyDOMOtherWay(); },
> ...
> };
> undoManager.transact(x);
>
>
> You can even do things like
>
> undoManager.transact(createParagraphTransaction(params));
>
> How's that different from:
> function createParagrahTransaction(params) {
> x = new DOMTransaction("Create paragraph");
> x.apply = function() { ... use params... };
> x.onundo = function() { ... use params ... };
> return x;
> }
>
> Also, in your example, I think that in the JS-object proposal you won't be able to reference the original object's properties -- it will be lost, and
> 'this' is window.
'this' would be the object, not window when callback object is used.
>
> The fact that we have to choose between creating APIs that feel like
> "DOM APIs" or "JS APIs" I think is an indication that "DOM APIs" are
> doing things wrong. There should be no difference between "DOM APIs"
> and "JS APIs".
>
> It is a problem. But WebIDL and JS aren't two of the same.
Received on Thursday, 12 July 2012 09:19:47 UTC