- this
- bind
- Hoisting
- Operator Precedence
- Lambda
- Object literals
- Prototypical inheritance vs. classical inheritance
- Prototypical inheritance: objects inherit from other objects; class free
- Differential inheritance
- proto, delegation
- Object.create
- new operator: required when calling constructor function
- Power constructors
- Immediately-Invoked Function Expression (IIFE); self-invoked functions
- Regular Expressions
- Declarative vs imperative
- Closures
- Loose typing
- Dynamic objects
- Object hardening (freeze)
- Truthy, Falsy
- Phony arrays
- CORS
- "use strict"
- Treats some mistake as errors
- Silent failures thrown as errors
- Use within function to avoid concatenation problems
- Forces use of explicit "var"
- Keeps vars created by eval within evaluated code
- Prevents/throws on:
- accidental creation of globals
- assignments to non-writables (NaN, getter-only property, new property on non-extensible object)
- deleting undeletables
- duplicate property names
- duplicated argument names
- octal syntax (leading zero prefix on numbers)
- with
- Type coercion - prevented with ===
- typeof
- 0.1 + 0.2 !== 0.3
- IEEE floating point problem
- for...in
- Does deep dredge instead of shallow skim
- Deep members must be explicitly filtered (obj.hasOwnProperty(prop))
- XSS
- Separation of concerns
- Learning JavaScript Design Patterns
- Pro JavaScript Design Patterns
- Learning Javascript with Object Graphs
- AOP
- Interceptors
- Promises, events
- tildeio/rsvp.js
- kriskowal/q
- Pub/sub
- https://github.com/postaljs/postal.js
- Call vs. apply
- Function declaration vs. function expression
- Automatic semicolon insertion (ASI)
function step(){}
var step = function() {}
- JSdotNext
- Iterators
- Maps, weak maps, sets
- Proxies
- Generators
- Generators and Suspend
- Iterators and generators in ECMAScript 6
- Default parameters
- Rest parameters
- Spread
- Let, const
- Symbols -- guaranteed not to collide
- Method shorthand
- Object.mixin
- Arrow functions
- Proper Tail Calls
- yearofmoo.com
- AngularJS and TypeScript
- Dynamically Loading Controllers and Views with AngularJS and RequireJS
- ngmin
- 1.2 and Behond
- ES6 (see above)
- Packaged apps
- ES7
- Object.observe
- Client/server model synchronization libraries
- ShareJS + Racer
- Web Components
- WebRTC -- peer-to-peer communication between browsers
- socket.io style (depending on the wrapper)
- video & audio chat
- Native promises
- Video: A More Awesome Web: Features You've Always Wanted - Google I/O 2013
- JSbooks
- JavaScript: The Good Parts by Crockford, Douglas
- Secrets of the JavaScript Ninja, by John Resig
- JavaScript: The Definitive Guide, by David Flanagan
- Effective JavaScript: 68 Specific Ways to Harness the Power of JavaScript, by David Herman
- Introduction to JavaScript and Browser DOM
- JavaScript: The Good Parts
- YUI Theater
- Google Tech Talks
- TSJS talks
- JSConf
- MDN
- Learning Advanced JavaScript
- Douglas Crockford's JavaScript
- Eloquent JavaScript: A Modern Introduction to Programming, by Marijn Haverbeke
- superhero.js
- How to keep up to date on Front-End Technologies
- Web Development Teaching Materials
- Web Directions
- Open Web Platform Daily Digest
- Patterns of Large-Scale JavaScript Applications
https://www.youtube.com/playlist?list=PL37ZVnwpeshGLrMTDPV12z7KmjrXsOeHT#rejectjs