JavaScript Twenty Years
Original introduction
This book is jointly written by Brendan Eich, the father of JavaScript, and Allen Wirfs-Brock, the lead author of the ES6 specification. It records and explains in detail the evolution of the JavaScript language over a total of 20 years from the birth of the language in 1995 to the formulation of the ES6 specification in 2015. The book not only explains the evolution of a large number of language technical details, but also reviews the historical successes and failures in specification formulation and standard games at a higher level. It is a story about how humans promote industrial development through competition and cooperation in business and technology. .
The story is quite long and complicated. The full text is divided into four parts, each corresponding to a major stage in the evolution of JavaScript. There is also a brief interlude between each section to introduce how developers at that time viewed and used JavaScript.
These four parts are as follows:
- The Birth of the Language (The Origins of JavaScript), introduces the creation and early development of JavaScript, including the language’s birth background, naming method, initial features and its design philosophy wait. This section also traces its initial evolution at Netscape and other companies, such as Microsoft's JScript.
- Creating a Standard (Creating a Standard) introduces the process from JavaScript to ECMAScript standard. This mainly covers the initiation of JavaScript standardization work, the creation of specifications, relevant contributors, and decision-making methods.
- Failed Reformations (Failed Reformations), which introduces the failed attempts of the ECMAScript committee to modify the language after Eich left, lacking a "benevolent dictator". This mainly involves committee splits, two rounds of investment in ES4, and the origins of Flash and ActionScript in it.
- Carry on the past and open up the future (Modernizing JavaScript), introduces the story behind the two successful standards of ES5 in 2009 and ES6 in 2015, mainly including the goals of ES5 and ES6, An introduction and review of major fundamental changes and important new features.
Table of contents
- The birth of language
- [Prehistoric Era](./part-1-vn.md#Prehistoric Era)
- [Brendan Eich joins Netscape](./part-1-vn.md#brendan-eich-joins Netscape)
- [Mocha’s Story](./part-1-vn.md#mocha-’s story)
- JavaScript 1.0 and 1.1
- JavaScript syntax
- Data type and expression
- Object
- Function object
- Built-in library
- Execution model
- Confusing Behavior and Bug
- Redundant Statement
- [Implicit type conversion and
==
operator](./part-1-vn.md#Implicit-type conversion-and-operator) - 32-bit arithmetic
this
keyword- Arguments object
- Special processing for numerical attribute keys
- Attribute of original value
- HTML comments in JavaScript
- Microsoft JScript
- From Mocha to SpiderMonkey
- Interlude: Feng Ping was murdered
- Creation Standard
- Find venue
- First TC39 meeting
- Writing specifications
- [Naming Standard](./part-2-vn.md#Naming Standard)
- [ISO Fast Track](./part-2-vn.md#iso-Fast Track)
- Definition ECMAScript 3
- [Interlude: JavaScript does not require Java](./part-2-vn.md#Interlude javascript-java is not required)
- Preacher
- [Rich Internet Applications and AJAX](./part-2-vn.md#Rich Internet Applications and-ajax)
- [Browser Game Theory](./part-2-vn.md#Browser Game Theory)
- Reform failed
- [Dissatisfied with success](./part-3-vn.md#Dissatisfied with success)
- [First attempt at ES4](./part-3-vn.md#First attempt at -es4-)
- [Another dead end](./part-3-vn.md#Another dead end)
- Flash and ActionScript
- [Second attempt at ES4](./part-3-vn.md#Second attempt at -es4-)
- Reset TC39-TG1
- Redesign ES4
- Resistance
- [Seeking Harmony](./part-3-vn.md#Seeking Harmony)
- [Interlude: Take JavaScript Seriously](./part-3-vn.md#Interlude Take JavaScript Seriously-javascript)
- [JavaScript Performance Revolution](./part-3-vn.md#javascript-Performance Revolution)
- CommonJS and Node.js
- [Javascript that becomes a universal runtime for browsers](./part-3-vn.md#-javascript that becomes a universal runtime for browsers)
- Carry on the past and open up the future
- Develop ES3.1/ES5
- [ES5 Technical Design](./part-4-vn.md#es5-Technical Design)
- [Strict Mode](./part-4-vn.md#strict mode)
- [Getter, Setter and object meta-operations](./part-4-vn.md#gettersetter-and object meta-operations)
- [Integrity and security characteristics of objects](./part-4-vn.md#Integrity and security characteristics of objects)
- [Removal of Activation Object](./part-4-vn.md#Removal of activation-object)
- Other ES5 features
- [Implementation and Testing](./part-4-vn.md#Implementation and Testing 86)
- [ES5 Technical Design](./part-4-vn.md#es5-Technical Design)
- From Harmony to ECMAScript 2015
- [Start investing in Harmony](./part-4-vn.md#Start investing in Harmony)
- [Strawman and target](./part-4-vn.md#strawman and target)
- [Advocate Model](./part-4-vn.md#Advocate Model)
- [Select feature set](./part-4-vn.md#Select feature set)
- [Start writing specifications](./part-4-vn.md#Start writing specifications)
- One JavaScript
- [Brendan's Dream](./part-4-vn.md#brendan-'s dream)
- [Rebuild specification](./part-4-vn.md#Rebuild specification)
- [Reorganization specification structure](./part-4-vn.md#Reorganization specification structure)
- [New term](./part-4-vn.md#New term)
- [New semantic category](./part-4-vn.md#New semantic category)
- [ES2015 Language Features](./part-4-vn.md#es2015-Language Features)
- [Realms, Jobs, Proxies and Meta Object Programming (MOP)](./part-4-vn.md#realmsjobsproxies-and Meta Object Programming mop)
- [Block-level declaration scope](./part-4-vn.md#Block-level declaration scope)
- Class
- Module
- [arrow function](./part-4-vn.md#arrow function)
- [Other features](./part-4-vn.md#Other features)
- [Deferred and abandoned features](./part-4-vn.md#Deferred and abandoned features)
- Harmony translator
- Complete ECMAScript 2015
- [Start investing in Harmony](./part-4-vn.md#Start investing in Harmony)
- Develop ES3.1/ES5
- Summary
- Acknowledgments
- Appendices
- Character
- [Appendice Organization](./appendices.md#Appendice Organization)
- Glossary
- [Abbreviations and Acronyms](./appendices.md#Abbreviations and Acronyms)
- Timeline
- [Part 1: Birth of Language](./appendices.md#Part 1: Birth of Language)
- [Part 2: Creating Standards](./appendices.md#Part 2: Creating Standards)
- [Part 3: Reform Failure](./appendices.md#The third part of the reform failed)
- [Part 4: Carry on the past and open up the future](./appendices.md#Part 4: Carry on the past and open up the future)
- [JavaScript Release Announcement of December 4, 1995](./appendices.md#javascript-release-announcement of December 4, 1995)
- Notes
- References