- Introduction
- Classical vs. Prototypal inheritance
- Psudoclassical Inheritance
- Object Composition
- The ES6
class
- Semicolons
- Tabs vs Spaces
- Semantic Versioning
- Arrow function syntax
- Observer Patterns
- Constants and Immutability
- Frameworks vs. Vanilla
- Contribution Guidelines
- License
JavaScript uses prototypal inheritance instead of classical inheritance. Knowing the difference is key to understanding the discussions below.
- Classical Inheritance in JavaScript
- Why Prototypal Inheritance Matters
- Benefits of prototypal inheritance over classical?
Controversy over how to do class-like inheritance in JavaScript existed long before the ES6 class
keyword.
- Composition over Inheritance by Mattias Petter Johansson
- The Open Minded Explorer’s Guide to Object Composition by Eric Elliott
- comment by Jeff M
- Composition vs Composite Pattern by Eric Elliott
- comment by Jeff M
- Composition vs Composite Pattern by Eric Elliott
- comment by Jeff M
ES6 introduced the class
keyword. ES6 classes are syntactical sugar over prototypal inheritance. There are many arguments for and against the class
keyword in JavaScript.
- How to Fix the ES6
class
keyword by Eric Elliott - The Two Pillars of JavaScript by Eric Elliott
- Crockford's Wager comment by Jayson Harshbarger
- A Simple Challenge to
Classical Inheritance Fans by Eric Elliott
- comment by Axel Rauschmayer
- Not Awesome: ES6 Classes by joshburgess
- comment by rauschma
- How to Use Classes and Sleep at Night by Dan Abramov
- ES6 class by getify
JavaScript has a feature called Automatic semicolon insertion (ASI). With ASI, you are able to omit certain semicolons. Use of this feature is controversial. After the class
keyword, ASI may be JavaScript's most controversial syntactic feature.
- An Open Letter to JavaScript Leaders Regarding Semicolons by Isaac Z. Schlueter
- JavaScript Semicolon Insertion, Everything you need to know
- Understanding automatic semi-colon insertion in JavaScript
- Well, actually; Not all semicolons… by getify
Semantic Versioning, while not a feature of JavaScript, is vital to JavaScript package management and is often misunderstood.
- We fail to follow SemVer – and why it needn’t matter by Stephan Bönnemann at JSConf Budapest 2015
- Semantic Versioning: Why You Should Be Using it
- Pragmatic Semantic Versioning by Nicolas Bevacqua
- Why semver ranges are literally the worst… by Kent C. Dodds
- Arrow This by getify
- Constantly Confusing ‘const’ by getify
Please read the following guidelines:
- Search previous suggestions before making a new one, as yours may be a duplicate.
- Make an individual pull request for each suggestion.
- Titles should be capitalized.
- Use the following format:
[Content Title](content link)
andby Author Name
where appropriate. - Choose corresponding section (and subsection) for your suggestion.
- New sections (and subsection) are welcome.
- Try to keep this resource objective but feel free to link to your subjective resource.
- Try to link to primary sources instead of collections.
This work is licensed under a Creative Commons Attribution 4.0 International License.