| Code: | JS-deeper |
| Category: | JavaScript |
| Format: | 20% lecture / 80% workshop |
| Duration: | 3-4 days |
| Target audience: |
developerzy |
| Enrollment: | Groups, companies |
| Venue: | Client's office. |
Workshop Program
The content of our program can be customised during pre-training analysis.-
Types - why most of the type coercion explanations are too simplified- Implementing conversion algorithms for ToBoolean and ToPrimitive
- Building a general conversion model
- Learning when should we use coercion
- Building the internal algorithm of ==
- Implementing conversion algorithms for ToBoolean and ToPrimitive
-
Object-oriented programming - why classical OOP is unnecessarily complex in JS- Building the complex mental models for constructor/class-based programs
- Building the complex mental models for programs based on objects linking
- Distinguishing .prototype, [[Prototype]] and __proto__
- Knowing new and instanceof from the inside
- Discovering nuances of Object.assign copying
- Identifying leaky class abstractions
- Building the complex mental models for constructor/class-based programs
-
Functions and its scopes - embracing its powers- Building more detailed hoisting understanding by manipulating the call context
- Building more detailed scope understanding based on call stack
- Nuances of block scope - differences between const, let and var
- Functions piece by piece - arguments vs parameters, default values, variable number of arguments
- Comparing 4 dynamic this binding methods
- Testing and comparing the performance and memory footprint of closures and prototypes
- Looking for the cases when arrow functions should not be the direct replacements of ES5 functions
- Building more detailed hoisting understanding by manipulating the call context
-
Functional programming I - use it even sparingly and get the simpler and more reusable code- Discussing what the functional programming really is
- Implementing built-in higher-order functions (map/filter/reduce/find)
- Implementing higher-order functions missing in JS (flatMap, zip, takeWhile etc.)
- Analyzing the ways to keep the objects immutable (seal, freeze, deepFreeze etc.)
- Optimizing function calls using memoization
- Discussing what the functional programming really is
-
Asynchronous JS - consciously choosing the proper way to handle asynchronicity- Analyzing the event loop-based concurrency model
- Finding problems with callbacks other than nesting
- Building utils for Promises - finally, timeout, first, retry, collapse
- Using async/await to make the asynchronous code look synchronously
- Analyzing the event loop-based concurrency model
-
Modularity - maximizing our options in module management- Analyzing Revealing Module and Dependency Injection patterns
- Implementing own EventEmitter to better understand the Observer pattern
- Adding choreography using EventEmitter
- Building the understanding of require, exports and module.exports of CommonJS
- Comparing ES6 modules with CommonJS
- Analyzing Revealing Module and Dependency Injection patterns
-
Functional programming II - food for thought for FP fans- Differentiating between partial application and currying
- Replacing object-oriented Dependency Injection based on constructors with function-oriented Dependency Injection based on currying
- Meeting pros and cons of point-free programming
- Building an abstraction to compose functions into blocks: compose and pipe
- Replacing null and undefined with composable Maybe
- Replacing try/catch with composable Either
- Differentiating between partial application and currying
Download PDF
Trainers
Meet the experts who will conduct your workshop.