JavaScript deeper - for those who want to understand JS

Expert workshop is something more than a training. Workshop is focused on client's project.

Code: JS-deeper
Category: JavaScript
Format: 20% lecture / 80% workshop
Duration: 3-4 days
Target audience: developers
Enrollment: Groups, companies
Venue: Client's office.

Workshop Program

The content of our program can be customised during pre-training analysis.

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

Download PDF


Meet the experts who will conduct your workshop.

Contact us for a free consultation.

Firstname and lastname:

If you prefer direct contact then you can always call.

Iwona Sobótka

Training coordinator

I agree to the processing of my personal data in accordance with the Law on the Protection of Personal Data in connection with sending a request via the contact form.

Providing the data is voluntary but necessary to process the query. I have been informed that I have the right to access my data, the possibility of correcting them, demanding stopping their processing.

The administrator of personal data is Bottega IT Minds, ul. Jana Sawy 2, 20-632 Lublin, Poland.

The information clausule