On Apr 30, 2010, at 6:32 AM, Jürg Lehni wrote:

After having used my own version of an implementation of Function.prototype.bind for about 4 years now I recently became aware of the one that appears to now be standardised in ES5.

The following page suggests its definition stems from the Prototype.js library: <http://wiki.ecmascript.org/doku.php?id=proposals:static_generics >

The page argues that "if we do this, we should emulate Prototype, including its 'pre-args' feature, since it actually hacks on Function.prototype and it's a de-facto standard".

I have to disagree, especially with this so-called 'pre-args' feature, which prepends arguments to the final argument list. There are quite a few libraries out there, Prototype.js is only one of many, and seems to have lost significance over the past years. Calling it a de-facto standard and shaping parts of the future ECMAScript standard after it in order to remain compatible with it seems questionable.

It's a fair point. Perhaps we prematurely standardized Function.prototype.bind.

But did you know that Dojo's hitch also allows leading arguments to be bound too? Likewise MooTools's bind. Only jQuery's proxy does not.

I always say that it is early days in the JS library standardization process, and we should not prematurely standardize. Nevertheless I think ES5 is better off with Function.prototype.bind than without. We could have done nothing to serve this use-case, but that seems strictly worse. We could have done something else but it would have been under a different name.

Instead we went with what seemed the de-facto standard. It's still a point in common among several top libraries.


There are other areas were similar considerations seem to have played a role, the oddly named Object.keys() comes to mind.

We've covered this recently. It was one of Doug Crockford's suggestions, IIRC. I like Doug's generally shorter names, but it indeed does not fit with Object.getOwnPropertyNames. This is a design- by-committee artifact, IMHO. We'll try to do better in the future in unifying name styles.

/be
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to