- 538.1k
- 111
- 675
- 846
Not jQuery. Not YUI. Not Prototype.
Frameworks may be useful, but they are often hiding the sometimes-ugly details of how JavaScript and the DOM actually work from you. If your aim is to be able to say "I know JavaScript", then investing a lot of time in a framework is opposed to that.
Here are some JavaScript language features that you should know to grok what it's doing and not get caught out, but which aren't immediately obvious to many people:
That
object.propandobject['prop']are the same thing (so can you please stop usingeval, thanks); that object properties are always strings (even for arrays); whatfor...inis for (and what it isn't).Property-sniffing; what
undefinedis; why it was a dreadful mistake; why the seemingly-little-knowninoperator is beneficial and different fromtypeof/undefinedchecks;hasOwnProperty; the purpose ofdelete.Nested function scoping; how it can be used for closures; the necessity of using
varin the scope you want.How global variables and
windowproperties collide; how global variables and document elements shouldn't collide but do in IE; the necessity of usingvarin global scope too.How the
functionstatement acts to ‘hoist’ a definition before code preceding it; the difference between function statements and function expressions; why named function expressions should not be used.How constructor functions, the
prototypeproperty and thenewoperator really work; methods of exploiting this to create the normal class/subclass/instance system you actually wanted; when you might want to use closure-based objects instead of prototyping. (Most JS tutorial material is absolutely terrible on this; it took me years to get it straight in my head.)How
thisis determined at run-time; how consequently method-passing doesn't work like you expect from other languages; how closures orFunction#bindmay be used to get around that.Other ECMAScript Fifth Edition features like
indexOf,forEachand the functional-programming methods onArray; how to fix up older browsers to ensure you can use them; using them with inline anonymous function expressions to get compact, readable code.Synchronous and asynchronous execution; the flow of control between the browser and user code.
How cross-window scripting affects
instanceof; how cross-window scripting affects the control flow across different documents.
- 538.1k
- 111
- 675
- 846