Whoops I accidentally copied the word prototype into the last 3
examples
Should read:

new Array().slice.call(array,0);
Array().slice.call(array,0);
[].slice.call(array,0);

sorry about that
Angus

On Jan 1, 7:23 pm, Angus Croll <[email protected]> wrote:
> Hi Joe,
>
> Array is a constructor which is a function, and Function has no slice
> function.
> Slice is actually defined on Array.prototype so you could say:
>
> Array.prototype.slice.call(array,0)
>
> This would be the most transparent syntax.
>
> However since every array instance inherits from Array.prototype, all
> of the following work too:
>
> new Array().prototype.slice.call(array,0);
> Array().prototype.slice.call(array,0);
> [].prototype.slice.call(array,0);
>
> All 4 approaches do almost the same thing (the only diff with the
> latter 3 is they create a needless array instance and force a quick
> search up the prototype chain - but it's a minor hit unless you do it
> often) - it's mainly just a matter of style.
>
> Hope this helps
> Angus
>
> On Jan 1, 8:54 am, Poetro <[email protected]> wrote:
>
>
>
> > 2010/12/31 Joe <[email protected]>:
>
> > > I'm running through John Resig's "Learning Advanced JavaScript" and I
> > > ran into some questions when I got to slide #45 (http://ejohn.org/apps/
> > > learn/#45).
> > > In the example, an arguments collection is passed to a function which
> > > is supposed to return a true array of the contents of arguments. I
> > > figured the function would look something like this:
>
> > > function makeArray(array){
> > >  return Array.slice.call(array, 0);
> > > }
>
> > Since the Array function doesn't have a slice method, you could use
>
> > function makeArray(array){
> >  return Array.prototype.slice.call(array, 0);
>
> > }
>
> > > But this failed to work, and Resig's function, which worked, looked
> > > like this:
>
> > > function makeArray(array){
> > >  return Array().slice.call( array );
> > > }
>
> > The Array() creates a new empty Array, that also has a slice method,
> > but does another call, so it is not that elegant nor as fast as using
> > the prototype's function.
>
> > --
> > Poetro

-- 
To view archived discussions from the original JSMentors Mailman list: 
http://www.mail-archive.com/[email protected]/

To search via a non-Google archive, visit here: 
http://www.mail-archive.com/[email protected]/

To unsubscribe from this group, send email to
[email protected]

Reply via email to