It is a short-port of Dojo's dojo.hitch(). The only thing it doesn't do
that Dojo's does is currying the arguments in the original hitched
function, eg:
// a bad example off the top of my head
var x = $(".nodes");
var clicker = $.hitch(x, "bind", "click");
clicker(function(e){
// this just called $(.nodes").bind("click", arguments[0])
});
It would be another few bytes to support that. dojo.partial is equally
as neat.
Regards,
Peter
Rick Waldron wrote:
> $.hitch() is a great "fn.bind()" solution, I still want to try a
> variety of scope related tests, but so far its really solid. I love
> the fact that you included the exception for a non existent method, I
> referred to Prototype's latest and there is no such check.
>
> Hats off.
>
> Rick
>
>
>
> On Tue, Dec 29, 2009 at 12:40 PM, Rick Waldron <[email protected]
> <mailto:[email protected]>> wrote:
>
> Agreed, that is slick. As soon as I get back to the office I'm
> going to test it, I look forward to this.
>
>
>
>
> -- Sent from my Palm Prē
>
> ------------------------------------------------------------------------
> aHeckman wrote:
>
> Yeah this looks good Peter. This should be in core IMHO.
>
> BTW, you're running for president? LOL
>
> On Dec 29, 9:24 am, Peter Higgins <[email protected]
> <mailto:[email protected]>> wrote:
> > ... this is why I keep suggesting making the bind functionality as
> > explicit function call, rather than hidden away in one or two api's:
> >
> > http://higginsforpresident.net/js/static/jq.hitch.js
> >
> > It does not extend any native prototypes, is useful and a bit magic
> > (with the string->method resolution).
> >
> > Regards,
> > Peter
> >
> >
> >
> > aHeckman wrote:
> > > I too feel relying on a function.prototype.bind implementation
> would
> > > be the most forward looking but I'm not sure that jives with the
> > > general approach of jQuery:
> >
> > > jQuery doesn't extend Native.prototype.anything.
> >
> > > On Dec 29, 1:12 am, Daniel Friesen <[email protected]
> <mailto:[email protected]>> wrote:
> >
> > >> Rick Waldron wrote:
> >
> > >>> Available, as in the "scope" argument is being retrofitted to an
> > >>> existing function, and ONLY to that function.
> >
> > >>> I don't get what you are talking about a fn.bind()
> implementation in
> > >>> jQuery, or what you mean by available in just one
> function though.
> >
> > >>> Read ES5.
> >
> > >>> function.prototype.bind()
> >
> > >> I already read ES5, I use portions of ES5 in a number of js
> server-based
> > >> projects already.
> >
> > >> However I don't get "ONLY" one function, since the whole point of
> > >> .bind() is to bind a `this` onto ONE function with one call.
> It's not
> > >> bind otherwise.
> >
> > >> So I don't see any limitation. Unless you are under the
> > >> misinterpretation that after you have called .bind() on one
> function you
> > >> have modified that function and bound it's `this`. .bind()
> doesn't
> > >> modify the function, it returns a new one.
> > >> From ES5 15.3.4.5 Function.prototype.bind> The bind method
> takes one or more arguments, thisArg and (optionally)
> >
> > >>> arg1, arg2, etc, and returns a *new*
> > >>> function object by performing the following steps:
> >
> > >> So this is valid ES5 code.
> >
> > >> "use strict";
> > >> var a = function() { alert(this); };
> > >> var a1 = a.bind("a");
> > >> var a2 = a.bind("b");
> >
> > >> a(); // Alerts undefined
> > >> a1(); // Alerts "a"
> > >> a2(); // Alerts "b"
> >
> > >>> On Mon, Dec 28, 2009 at 7:43 PM, Daniel Friesen
> > >>> <[email protected] <mailto:[email protected]>
> <mailto:[email protected]
> <mailto:[email protected]>>> wrote:
> >
> > >>> I made a post about how confusing people may find the
> name bind some
> > >>> time ago. Suggested renaming bind to something like
> event, and keeping
> > >>> bind as an alias of course. That was rejected.
> >
> > >>> I don't get what you are talking about a fn.bind()
> implementation in
> > >>> jQuery, or what you mean by available in just one
> function though.
> >
> > >>> ~Daniel Friesen (Dantman, Nadir-Seen-Fire)
> > >>> [http://daniel.friesen.name]
> >
> > >>> Rick Waldron wrote:
> > >>> > John,
> >
> > >>> > While I'm glad to see a scope arg available, i still
> think this is
> > >>> > negligent to the future of jQuery and ES standards. I
> really think a
> > >>> > fn.bind() implementation would ideal (since it would be
> jQuery-wide
> > >>> > and not just available in one function), but as I've
> noted in
> > >>> the past
> > >>> > and is exampled here, beginners may find this syntax a
> bit boggling:
> >
> > >>> > $(foo).bind('event', fn.bind(bar) );
> >
> > >>> > Rick
> >
> > >> ~Daniel Friesen (Dantman, Nadir-Seen-Fire)
> [http://daniel.friesen.name]
> >
> > > --
> >
> > > You received this message because you are subscribed to the
> Google Groups "jQuery Development" group.
> > > To post to this group, send email to
> [email protected] <mailto:[email protected]>.
> > > To unsubscribe from this group, send email to
> [email protected]
> <mailto:jquery-dev%[email protected]>.
> > > For more options, visit this group
> athttp://groups.google.com/group/jquery-dev?hl=en
> <http://groups.google.com/group/jquery-dev?hl=en>.
>
> --
>
> You received this message because you are subscribed to the Google
> Groups "jQuery Development" group.
> To post to this group, send email to [email protected]
> <mailto:[email protected]>.
> To unsubscribe from this group, send email to
> [email protected]
> <mailto:jquery-dev%[email protected]>.
> For more options, visit this group at
> http://groups.google.com/group/jquery-dev?hl=en.
>
>
>
> --
>
> You received this message because you are subscribed to the Google
> Groups "jQuery Development" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/jquery-dev?hl=en.
--
You received this message because you are subscribed to the Google Groups
"jQuery Development" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/jquery-dev?hl=en.