Three Googlers, Mark Miller, Waldemar Horwat, and Mike Samuel gave the talk above to discuss how JavaScript is changing, and gets into detail on EcmaScript 5.
- Changes to JavaScript, Part 1: EcmaScript 5
- Brief History
- EcmaScript 5 Overview
- Slide 4
- Aren't standards doomed to grow?
- Slide 6
- Problem: Can’t emulate platform objects
- Accessor (getter/setter) properties
- Accessor (getter/setter) properties…
- Need property attribute control
- Property attribute control API
- Example: Unobtrusive Convenience Methods
- Accessor (getter/setter) properties…
- Practical emulation of host objects
- ES3 Makes Robustness Too Hard
- More Robust Programming in ES5
- What’s the Point? Can’t preserve invariants in ES3
- Tamper proof objects
- Tamper proof points, first try
- Tamper proof points, second try
- Frozen object builder helper
- Tamper proof points
- Scoping accident 1: Nested named function expressions
- Slide 24
- Finding Opportunity in Confusion
- Scoping accident 2: Throwing a function
- Scoping accident 3: “as if by” initial or current?
- Slide 28
- Wart exchange: keyword collision
- Wart removal: Backchannel
- Wart exchange: eval in what scope?
- Wart clarifications: Internal“types”
- Strict mode: Support Defensive Code
- Strict mode: Per script opt-in
- Strict mode: Per script or per function opt-in
- Slide 36
- Nonstrict global object leakage
- Nonstrict this-coercion hazards
- Slide 39
- ES5 functions encapsulated?
- Slide 41
- ES5-strict functions encapsulated
- ES5-nonstrict isn't statically scoped
- ES5-strict is statically scoped, but…
- But static scoping isn’t lexical scoping
- Slide 46
- Slide 47
- Lexical Scoping just missed ES5 train. How to cope?
- Higher order array methods
- Slide 50
- JSON: S-expressions of the web
- JSON in ES5
- Closures don’t capture “this”
- Slide 54
- Function.prototype.bind() helps
- Imperfect Lambda Abstraction in ES5
- Remaining fixable ES5 warts
- Conclusions
- Further Reading
No comments:
Post a Comment