Look at the first lesson agenda and see what to focus on first and what to leave for later time: F u n c t i o n s Can be defined in two ways: f = function () {}; function f () {}; has compile-time precedence, but scope is the same as for "assigment version"; 1. f is an object and ( typeof f === 'function' ) evaluates to true; ( for types, do text-search for "Mistakes were made" in [1] ) 2. so, can have properties f.moo = function () { alert( 'myau' ); }; f.arr = [ 'hello' ]; try console.log( f ); 3. functions have "flexible" argument list. if actual parameters omitted, their formal parameters twins get value `undefned` 4. Allows recursion. 5. functions have closures. 6. are multipurpose "flat call": a = f( 3 ); functions can serve as ( pseudo ) constructors. a = new f( 3 ); 7. functions can be invoked in four ways: new f( x ); f( x ); and obj.f( x ); fun.apply(thisArg, [argsArray]) https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply fun.call(thisArg[, arg1[, arg2[, ...]]]) https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call [5] has more thoughtfull classification; it names these 4 mehtods correspondingly: http://books.google.com/books?id=PXa2bby0oQ0C&pg=PA26&source=gbs_toc_r&cad=3#v=onepage&q&f=false constructor invocation pattern; function invocation pattern; and method invocation pattern; apply invocation pattern; fun.apply and fun.call 8. functions have "variable" context which is denoted by `this`; 9. Returned values do depend on usage: a. when used as a constructor: returns "this". b. explicit: return me; c. otherwise: returns `undefined`