OBIETTIVO DEL CORSO
L’obiettivo del corso Javascript avanzato è di completare le competenze professionali di tutti coloro che con ruoli diversi (front-end e full stack developer, web designer e developer, UI designer e analoghi) concorrono alla creazione delle interfacce web e desiderano padroneggiare e avere un controllo completo sulle tecnologie lato client browser, di concerto con HTML 5 e CSS 3.
In particolare il corso intende fornire una conoscenza strutturata e completa di javascript, mettendo ordine in un ambito spesso oggetto di autoapprendimento, conoscenze parziali e pratiche talvolta errate.
Il risultato è un vantaggio professionale nello sfruttare appieno le potenzialità di questo linguaggio, cruciale nella tendenza a sviluppare dei front end sempre più interattivi e per questo da ottimizzare al massimo.
LA DIDATTICA
Durante il corso verranno presentati gli argomenti sotto riportati mediante un approccio “evolutivo” basato sui seguenti passaggi:
- Esposizione del problema da risolvere (semplice e focalizzato sul concetto);
- Risoluzione del problema grazie all’introduzione di un nuovo concetto;
- Discussione dei vantaggi e degli svantaggi della soluzione proposta;
- Utilizzo degli svantaggi della soluzione come nuovo problema da risolvere.
Il programma parte dai concetti “core” del linguaggio (presenti fin dalle prime versioni) e accompagna fino a ES 2023 (o ES14).
PREREQUISITI: conoscenze di base di programmazione, in un linguaggio qualsiasi.
DURATA: 16 ore
PROGRAMMA DEL CORSO
- Oggetti, oggetti e ancora oggetti
- Tipi primitivi
- Creazione di oggetti
- Oggetti come keyed collection
- Reflection
- ES 2015: classi
- Funzioni
- Anche le function sono oggetti
- Function Declaration vs Function Expression
- Invocation Patterns: method invocation pattern, function invocation pattern, constructor invocation pattern, apply invocation pattern
- Funzioni “Costruttore”
- Arguments
- Scope
- Closure
- Immediately Invoked Function Expressions (IIFE)
- Global abatment
- Oggetti come namespace
- IIFE
- Pattern module
- ES 2015: moduli
- Prototype
- Ereditarietà
- Ereditarietà pseudo-classica
- Ereditarietà prototipale
- Ereditarietà funzionale
- ES 2015: classi e loro estensione
- ES6 (ECMAScript 2015):
- Costanti
- Default Values
- Arrow functions
- Promises
- ES7 (ECMAScript 2016):
- Block scope per le variabili
- async/await
- includes
- Exponentiation Operator
- ES8 (ECMAScript 2017):
- values
- entries
- getOwnPropertiesDescriptors
- ES9 (ECMAScript 2018):
- spread operator
- rest parameters
- ES10 (ECMAScript 2019):
- flat()
- flatMap()
- sort (ora stabile)
- ES11 (ECMAScript 2020):
- BigInt primitive type
- nullish coalescing operator
- ES12 (ECMAScript 2021):
- replaceAll()
- any()
- ES13 (ECMAScript 2022):
- Top-level await
- New class elements
- static block inside classes
- ES14 (ECMAScript 2023):
- toSorted
- toReversed
- findLast and findLastIndex on Array.prototype and TypedArray.prototype