On Jan 8, 2008 11:44 PM, Mislav Marohnić <[EMAIL PROTECTED]> wrote: > Nicolás shouldn't have answered your question because this group is for > discussion of development for Prototype core library. > > You can ask general questions on "rails-spinoffs" group or, if it's only > related to Core JavaScript, on any other JavaScript mailing list. > > Thanks! > > > > On Jan 9, 2008 2:36 AM, Nicolás Sanguinetti <[EMAIL PROTECTED]> wrote: > > > > > > On Jan 8, 2008 11:20 PM, Simon Thomas <[EMAIL PROTECTED]> wrote: > > > > > > Can anyone explain the difference in the folllowing and when and why > > > to use each of the methods. > > > (Or knows a better place to ask this question) > > > > > > 1) > > > var myVar = function(args){ > > > // inner functions and vars > > > }; > > > > This makes myVar point to that function, so you can later call > > myVar(args), it's a normal function declaration and it's almost > > equivalent to > > doing function myVar(args) { ... }. As functions are first-order > > citizens in JavaScript, you can just assign them to a variable. > > > > > > > 2) > > > var myVar = (function(args){ > > > // inner functions and vars > > > }); > > > > This is exactly the same as (1). As any object in JS, a function can > > be wrapped in parenthesis with no consequence. > > > > > > > 3) > > > var myVar = (function(args){ > > > return { > > > //inner functions and vars > > > } > > > })(); > > > > This will declare an anonymous function that receives "args" (only one > > argument), and *immediately after declaring it* it will call it > > passing *no arguments*. So if you depend on args inside the function > > that will error out. Since it executes it, myVar will point to > > whatever the function returns. > > > > This technique was called "The Module Pattern" by Douglas Crockford, > > and has been described throughly in the interweb: > > - http://yuiblog.com/blog/2007/06/12/module-pattern/ > > - http://wait-till-i.com/2007/07/24/show-love-to-the-module-pattern/ > > - > http://nefariousdesigns.co.uk/archive/2007/08/javascript-module-pattern-variations/ > > > > Best, > > -Nicolas > > > > > > > > > > > > > > > > > > > > > >
Oops, hadn't noticed this was in Proto-core. Sorry, I never notice if a thread is in core or spinoffs :-\ -N --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Prototype: Core" group. To post to this group, send email to prototype-core@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/prototype-core?hl=en -~----------~----~----~----~------~----~------~--~---