22.1. ECMAScript 4/JavaScript 222.1.1. JavaScript 1.522.1.1.1. Constants22.1.1.2. Getters and Setters22.1.2. JavaScript 1.622.1.2.1. Array Extras22.1.2.2. Array and String Generics22.1.3. JavaScript 1.722.1.3.1. Block-Level and Other Scopes22.1.3.2. Generators22.1.3.3. Iterators22.1.3.4. Array Comprehensions22.1.3.5. Destructuring Assignments22.1.4. JavaScript 1.822.1.4.1. Expression Closures22.1.4.2. Generator Expressions22.1.4.3. Array Reductions22.1.5. JavaScript 1.922.1.6. ECMAScript 4 Proposals22.1.7. Variable Typing22.1.7.1. Strings, Numbers, and Booleans22.1.7.2. Nullability22.1.7.3. Detecting Types22.1.8. Functions22.1.8.1. Rest Arguments22.1.8.2. Optional Arguments22.1.8.3. Generic Functions22.1.9. Defining Types22.1.9.1. Union Types22.1.9.2. Deep Types22.1.9.3. Function Types22.1.9.4. Parameterized Types22.1.9.5. Assigning and Converting Types22.1.10. Classes and Interfaces22.1.10.1. Class Prototypes22.1.10.2. Virtual Properties22.1.10.3. Dynamic Classes22.1.10.4. Static Members22.1.11. Interfaces22.1.12. Inheritance22.1.12.1. Overriding superclass Methods22.1.12.2. Final Classes and Methods22.1.13. Namespaces22.1.14. Packages22.1.15. Other Language Changes22.1.15.1. for-each-in22.1.15.2. Operator Overloading22.1.15.3. Changes to with22.1.15.4. Scoping this22.1.15.5. Strict Mode22.1.15.6. Error Type Detection22.1.15.7. Multiline Strings22.1.15.8. String Indexing and Array Slicing22.1.15.9. Regular Expression Changes22.1.15.10. Property Enumeration Setting22.1.15.11. Keyword Usage22.1.15.12. Date Object Changes22.1.15.13. The Vector Class22.1.15.14. The Map Class22.1.16. The Future of ECMAScript 422.2. ECMAScript 3.122.2.1. Changes to Object Internals22.2.2. Static Object Methods22.2.2.1. Accessing Prototype Information22.2.2.2. Working with Object Properties22.2.3. Object Creation22.2.3.1. Retrieving Property Names22.2.3.2. Object Lock-Down Methods22.2.4. Changes to Functions22.2.4.1. Changes to Other Types22.2.5. Native JSON Support22.2.6. Decimals22.2.6.1. Decimal Operations22.2.6.2. Decimal Comparisons22.2.6.3. Decimal Conversions22.2.6.4. Decimal Math22.2.6.5. Other Decimal Methods22.2.7. Usage Subsets22.2.8. The Future of ECMAScript 3.122.3. Summary