Course Code:
advancedjsbespoke
Duration:
14 hours
Prerequisites:
Must-Have
Web development experience with HTML, CSS, JavaScript
Good To Have
Exposure to any server technology (J2EE, .NET, Ruby etc)
SUGGESTED AUDIENCE:
Web developer who wants to build best-of-breed web UIs with the simplicity and elegance of JavaScript.
Overview:
This workshop teaches the participants how to take advantage of some of the advanced features offered by JavaScript for building better maintainable applications large scale applications.
It also introduces some of the frameworks that can assist in this process.
OBJECTIVES:
At the end of this training course, the participants will:
- Understand and appreciate the dynamic typed nature of JavaScript language
- Be able to understand the exploit some of the functional programming techniques in JavaScript
- Understand and resolve scope issues in JavaScript
- Techniques for modularizing JavaScript code
- Know how to modularize and loadJavaScript files using Require.js
- Be aware of some of the quirks in the JS language
Course Outline:
DAY-1
- Expressive JavaScript
- The Flexibility of JavaScript
- JavaScript as a Loosely Typed Language
- Functions as First-Class Objects
- Object Mutability
- Functions In Depth
- Function Objects
- Function Literal
- Function Invocation Patterns (call, apply, bind)
- Augmenting Types
- Recursion & Closures
- Functions as Callbacks
- Function Currying & Memorization
- Immediately Invoked Function Expression ( IIFE )
- Higher Order Functions
- Closures In Depth
- How Closures Work
- Private Variables, Callbacks and Timers
- Binding Function Contexts
- Overriding Function Behavior
- Object Orientation With Prototypes
- Object Instantiation
- Constructors
- Inheritance and Prototype Chain
- Extending Object
- Extending Number
- Instantiation Issues
- Writing class-like code
- JavaScript Gotchas
- Global Variables
- Scope
- Semicolon Insertions
- Type Coercion
- Modular JavaScript
- Techniques for modularizing JavaScirpt code
- Debugging Techniques (Optional)
- Using “console”
- Developer tools in the browser
- Using breakpoints
- Advanced breakpoints
DAY-2
- JavaScript Design Patterns
- Common Design Pattern Implementations
- Module Pattern
- Revealing Module Pattern
- Observer Pattern
- Factory Pattern
- Decorator Pattern
- Strategy Pattern
- PubSub Implementation
- ES6
- New Features in ES6 Overview
- Using Transpilers (Babel)
- Array Functions
- Variable Declarations (let, const)
- Object and Array deconstruction
- Creating Classes & Inheritence
- Generators
- Accessor Methods
- Asynchronous programming using Promises
- Modularity in ES6
- ES7, ES8, ES9 & ES10
- Class Properties
- string methods (trimEnd(), trimStrat(), padEnd(), padStart())
- Exponential Operator (**)
- Trailing Comma
- Object.values() and Object.entries()
- Array.prototype.includes()
- Async & Await
- Object.getOwnPropertyDescriptors()
- Rest & Spread Operator for Objects
- Asynchronous Iteration
- Optional catch binding
- ES2020
- BigInt
- Dynamic Import
- Nullish Coalescing
- Optional Chaining
- Promise.allSettled
- globalThis
- Module Namespace exports