On Sun, Jul 17, 2011 at 2:26 AM, Matthew Bramer <remym...@gmail.com> wrote:
> So, I'm taking away from your answer that I should in general use .call
> I have to tell you, I have a hard time following what you have said though.
>  I'm pretty new to this stuff, so some of your answer is clearly above my
> knowledge level.  Sometimes, I wish I had an easy button for JS. :/
> Cheers,
> Matt

Ok, let me try ;)

Let's say you have a function with three parameters, foo bar baz ->

function boo(foo,bar,baz){ alert(foo+bar+baz); }

Now `call` and `apply` allow you to set the "context" (`this` value)
of a function, that's what the first parameter is for. But let's skip
that for now (I use `null` for it).

Then the only difference left between `call` and `apply` is that apply
will map the second parameter (which must be an array) onto the
function parameters of the original function. On the other hand, call
will pass them on 1:1 from the second argument you pass on to it
onwards. In example:

boo.call(null, 1, 2, 3); -> alerts 123
boo.call(null, "hello", 5, "world"); -> alerts hello5world

boo.apply(null, [1,2,3]); -> alerts 123
boo.apply(null, ["hello", 5, "world"]); -> alerts hello5world

Mind you, `apply` ignores any other parameters, just looks at the
second parameter (the array) !

boo.apply(null, [1,2], 3); -> alerts 12undefined

So part of the usefulness of `call` and `apply` is passing on
parameters from an array. The usages for this are usually a bit higher
level so I won't bother you with them :)

- peter

-- 
To view archived discussions from the original JSMentors Mailman list: 
http://www.mail-archive.com/jsmentors@jsmentors.com/

To search via a non-Google archive, visit here: 
http://www.mail-archive.com/jsmentors@googlegroups.com/

To unsubscribe from this group, send email to
jsmentors+unsubscr...@googlegroups.com

Reply via email to