This book is 100% complete
Completed on 2017-09-27
About the Book
- A look into the obscure object internals and meta-programming with the new Reflect API, Proxies and Symbols
- A thorough introduction to TypeScript and how it can boost your developer productivity
- A breathtaking story of EPIC proportions and awkward sense of humor...
We, programmers, sadly do not live in such a world. But we do have a measure of magic in ourselves, we have the skills and power to create things out of nothingness. And even if we cannot throw fireballs or levitate (yet), we can definitely change/improve/enhance reality and the universe around us with our little creations. Ain't that freaking awesome?
- About The Author
- About the Technical Reviewers
- A Story About Why I Wrote This Book
- What is the Goal of This Book?
- Is This Book For You?
- How is The Book Organized?
- Understanding the Code Samples in This Book
- A Note About ECMAScript 5 (ES5) and ES6, ES7, ES8 and ESnext within The Book
A Note Regarding the Use of
- A Note About the Use of Generalizations in This Book
- Do You Have Any Feedback? Found Any Error?
- A Final Word From the Author
- Once Upon a Time…
Introduction to the Path of Summoning and Commanding Objects (aka OOP)
- OOP Beyond Classes
- Combining Classes with Object Composition
- The Path of the Object Summoner Step by Step
Summoning Fundamentals: Encapsulation and Information Hiding
- Let’s get Started With The Basics of OOP!
- Object Initializers
- Constructor Functions and the New Operator
- Object Initializers vs Constructor Functions
- Object Factories vs Constructor Functions
Summoning Fundamentals: Prototypical Inheritance
- You Don’t Repeat Yourself. Inheritance!
- Classical Inheritance vs Prototypical Inheritance
- Object Prototypes
- Object Prototypes with Object.Create or OLOO
- Defining Prototypes with Constructor Functions
- Creating Longer Prototype Chains
- What About Concatenative Protypical Inheritance?
- Object Initializers vs Object.create vs Constructor Functions
Summoning Fundamentals: Polymorphism
- Polymorphism Means Many Forms
- Polymorphism in C#
- Ever Heard of Classical Inheritance?
- Constructor Function + Prototype = Class
- Simplifying Classical Inheritance in ES5
White Tower Summoning Enhanced: The Marvels of ES6 Classes
- Create These Units Faster with ES6 Classes!
- From ES5 “Classes” to ES6 Classes
- Prototypical Inheritance via Extends
- Overriding Methods in ES6 Classes
- Static Members and Methods
- ES6 Classes and Information Hiding
- ES6 Classes Behind the Curtain
Black Tower Summoning: Objects Interweaving Objects with Mixins
- The Problem With Classes and Classical Inheritance…
- Free Yourself From Classes With Object Composition and Mixins
- Limitations of Mixins as Objects
- Functional Mixins
- Combining Mixins with ES6 Classes
- Object.assign in Depth
Black Tower Summoning: Safer Object Composition with Traits
- An Improvement Over Mixins
- Traits with traits.js
- Composing Traits
- What Happens When You Miss Required Properties?
- Resolving Name Conflicts
- Traits and Data Privacy
- High Integrity Objects With Immutable Traits
- Traits vs Mixins
Black Tower Summoning: Next Level Object Composition With Stamps
- I Call Them Stamps
- What are Stamps?
- Stamps By Example
- Stamp Composition
- Stamp Fluent API
- Concluding: Stamps vs Mixins vs Traits
Object Internals: The Secrets of Objects
- A Nifty Trick… Object Internals
All your Objects Are Belong to
- Defining Properties with Object.defineProperty
- Defining Multiple Properties with Object.defineProperties
- Beautiful Property Manipulation with ESnext Decorators
- Class And Method Decorators
- Create Objects With Object.create And Property Descriptors
- Other Useful Object Methods
More Metaprogramming with Reflect, Proxies and Symbols
- How Good Are You at Reflection?
- ES6 Reflect
- Reflection? What is reflection?
- ES6 Proxies
- ES6 Symbols and Meta-programming
- You Shall Only Use Types!
- So, What Are The Advantages and Disadvantages of TypeScript?
- Setting up a Simple TypeScript project
- Cool TypeScript Features
- Type Annotations In TypeScript
- Working with TypeScript in Real World Applications
- Introduction to the Path of Summoning and Commanding Objects (aka OOP)
Tome II. Epilogue
- Thank you!
References and Appendix
- An Army of Objects
- Object Initializers (a.k.a. Object Literals)
- Creating Objects With Factories
- ES6 Improves Object Initializers
- ES6 Symbols and Data Privacy
- This, Your Most Dangerous Foe
- Type Coercion Madness
Appendix C. More Useful Function Patterns: Function Overloading
- Have you Heard About The Marvels Of Overloading?
- How Do We Do Function Overloading Then?
- Function Overloading by Inspecting Arguments
- Using an Options Object
- Relying on ES6 Defaults
- Taking Advantage of Polymorphic Functions
Appendix D. Setting Up Your Developing Environment For ES6
- Using ES6 with Node.js
- ES6 and Modern Browsers
- Real-World ES6 Development Environments
- Appendix E. Fantasy Glossary
- White papers
Artur is a passionate software developer who has built various web applications for small as well as enterprise companies.
Sometimes he recollects the good, old times when jQuery was in beta, just about to be released as 1.0 and nobody even knew what SPA stood for... Everyday he tries to get better with modern front- end development and software craftsmanship.
Currently he works as Senior Applications Developer at Oracle. When he gets home he plays around with side projects, open source or gets outside and does some running.
Principal Software Engineer at Bluestem Brands, Inc.
Kári Tristan Helgason
Software Engineer at Google and Technical Reviewer for this book
The Leanpub 45-day 100% Happiness Guarantee
Within 45 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.
See full terms...