- Usage in CommonJS - Usage in AMD - Usage with global objects - Pitfalls to get around `Illegal invocation`