









Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Appunti di JavaScript ad oggetti e procedurale
Tipologia: Appunti
1 / 16
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!










JavaScript 1
Nasce nel 1995 NetScape aveva prodotto il primo browser. Nella versione 2.0 di NetScape introduce un linguaggio chiamato JavaScript linguaggio apposito per eseguire il codice nel browser Il linguaggio è sviluppato da Brendan Eich JavaScript, viene introdotto on Java per puro scopo di marketing, per ammiccare ai linguaggi più conosciuti in quel momento storico (c, c++ e Java)
ECMAScript è stato un tentativo di aavere una versione standard del linguaggio di programmazione. Microsoft attraversa il suo momento di crisi a causa della svalorizzazione del potenziale degli smartphone. JavaScript è diventato il linguaggio più disponibile del mondo ECMAScript (standard ECMA 262 JavaScript è stata un implementazione di ECMAScript pensata per girare (tipicamente) nel browser La versione di riferimento di questo corso sarà ECMAScript 6
Sintassi simile a quella del neonato Java Il linguaggio è tipato in modo dinamico, e in modo debole Le variabili sono dichiarate senza tipo Assume il tipo del suo valore La stessa variabile può assumere valori di tipi diversi
let a; // a è una costate udefined a = 1; a = "Stringa";
JavaScript 2
Le stringhe possono essere scritte tra apici doppi e normali;
let a = 1; let b = '1'; if (b == a){} //ritorna true
Il linguaggio è interpretato e non compilato. Linguaggio cross platoform.
Runtime Engine JavaScript è lʼinterprete del nostro codice, capace di eseguire il codice sorgente. Tecnica di compilazione è la JIT Just In Time), cioè compila il codice al volo per il processore
Chrome V SpiderMonkey Chakra
runtime engine basato su V supportato da Linux Foundation Undefined è un valore preciso e non dato casualmente
Elementi di base Un applicazione JavaScript è una collezione di file con estensione .js , nella stragrande maggioranza dei casi è possibile seguire le indicazioni sintattiche del C e le cose “funzionanoˮ.
JavaScript 4
number : virgola mobile, 64bit, NaN Not a Number) non è un errore ma indica una cosa impossibile ad esempio (n / 0 string : carattere UNICODE undefined : unico tipo Undefined null;
let dichiara una variabile con block scope, non è possibile dichiararne il tipo. undefined, il valore delle variabili dopo la dichiarazione NON è casuale, inizializzazione automatica con valore speciale, ovvero la costante undefined
let a; console.log(a)
const: dichiara una costante con block scope, non si può dichiarare il tipo ed è necessaria lʼinizializzazione.
Js è un linguaggio ibrido Fornisce una serie di oggetti predefiniti
Conversione ti tipo valore implicita Attenzione a cosa succede dietro le quinte 10 ʼ 5 ʼ // “105ˮ cohercion a string di 10 ‘10ʼ5 // “105ˮ cohercion a string di 5 ‘10ʼ5//5, cohercion a number di 10 (questo perche js non sa fare sottrazioni con le stringhe) parseInt(ʼ 10 ʼ) 5 //15, conversione esplicita
===, ! confrontano valore e tipo
JavaScript 5
==, ! confrontano type con cohercion Esempi 1 1 //true 1 ‘1ʼ //false 1 ‘1ʼ // true
undefinde diventa false in un contesto Boolean undefined diventa NaN in un contesto Number null diventa false in un contesto Boolean null diventa 0 in un contesto Number
parseInt(
Il calcolo di unʼespressione booleana viene interrotto non appena il valore è definito:
(b !== 0) && (a % b === 0) se b è 0 il modulo non viene calcolato, quindi si interromope
Sono sequenze di caratteri tra apici singoli o doppi, lʼoperazione fondamentale è la concatenazione, costruisce una nuova stringa con tutti i caratteri della prima e della seconda, con cohercion. Le stringhe sono degli oggetti, la notazione posizionale è ispirata al C/C restituisce il carattere in posizione (base 0
let a = 'test' ; s[1] //restituisce e //T e s t //0 1 2 3
JavaScript 7
Le librerie devono essere importate utilizzando lʼistruzione require() per definire un nuovo oggetto.
let stdin = require("readline-sync");
Node ha un prorpio package manager per la gestione delle librerie e delle loro dipendenze. Il Node Package Manger (npm) permette di scaricare dai repository predefiniti ed installare una libreria:
//nel cmd npm install <<nome-libreria>> npm install readline-sync //Oppure npm i readline-sync
Utilizziamo un input non formattato con = stdin.question() Utilizziamo un input formattato con stdin.questionInt() o anche stdin.qeustionFloat(). Per effettuare una convalida dei dati il codice è:
let stdin = require("readline-sync"); //importiamo la libreria let raggio = stdin.questionInt('Immetti raggio');//utilizziamo while(raggio <= 0){ raggio = stdin.questionInt('ERRORE ripeti');// riutilizzia }
JavaScript 8
Sono identiche a quelle viste in C, sono gruppi di istruzioni tra parentesi graffe.
Sono molto simili a quelli già visti in passato, ma con alcune particolarità importanti, i sottoprogrammi possono essere funzioni o procedure, i sottoprogrammi hanno parametri e argomenti. Parametri e tipo non sono tipati le funzioni utilizzano il return le prcedure utilizzano rturn, hanno una semantica ordinaria. I parametri sono esclusivamente per valore, quindi con riferimento ai tipi di base NON è possibile modificare lʼargomento utilizzando il parametro. Quindi le procedure non modificano il valore, infatti per modificarlo bisogna utilizzare una funzione che restituisce un nuovo valore, e modificare lʼargomento direttamente nel chiamante.
Non necessariamente parametri ed argomenti devono coincidere in numero, dato che alcuni argomenti possono essere (^) undefined
In JavaScript è possibile assegnare un valore di default agli argomenti, il valore viene utilizzato nel caso in cui lʼargomento fornito sia undefined, ma ha senso solo sui parametri in coda alla dichiarazione, ha senso solo su parametri in coda alla dichiarazione
function somma ( a, b = 1){ return a + b; } somma(1 ,2) // return 3 somma(1)//return 2
Gli elementi non sono tipati e la loro dimensione è dinamica
JavaScript 10
eliminazione in testa: a.shift(v) operazioni in posizione i: a.splice()
a.splice(
parte da posizione pos, elimina #daRimuovere elementi aggiunge al loro posto v1, v2..
a.splice(3, 0, v)//aggiunge v in posizione 3 a.splice(3, 1)//elimina in posizione 3
Data lʼesistenza agli oggetti in JavaScript non esistono i Record, nel seguito vediamo gli oggetti come “super-recordˮ, ovvero collezione di attributi.
JavaScript POO
JavaScript POO 1
Come scrivere JavaScrtp ad oggetti, permette di programmare in procedurale e ad oggetti. Lʼunica differenza che la programmazione ad oggetti è molto diversa da quella procedurale, lʼobbiettivo finale è quella di produrre applicazioni che funzionano come quelle in Java.
JavaScript è un linguaggio ibrido consenti di programmare con gli oggetti, ma è basato su concetti completamente diversi rispetto a Java. Java non è un linguaggio dinamico a differenza di JavaScript dove posso aggiungere e togliere delle proprietà, quindi ci sono delle differenze sostanziali. La programmazione in Js è complicata, essendo un linguaggio non tipato ha limiti significativi per lo sviluppo in medio ed in grande, la sua natura lo rende uno strumento utile per scrivere un applicazione “giocattoloˮ con le conoscenze attuali, però è necessario conoscere i concetti perchè la piattaforma è molto utilizzata.
Tecnica che prevede lʼutilizzo di un linguaggio di programmazione tipato e più pulito Il cui codice può essere tradotto verso versioni diverse di ECMAScript/JavaScript Principali esempi possono essere TypeScript(Mircosoft) e Dart(Google), hanno entrabi dei propri transpiler, che generano le applicazioni Web in modo più veloce e sicuro per evitare errori.
Esistono due categorie, dati primitivi come boolean, number, string, undefined e null. Vengono confrontati per valore
JavaScript POO 3
Nelle classi il comportamento è sempre strict , si utilizza la parola chiave constructor che permette di creare il nostro costruttore , le proprietà non vengono dichiarate ma “utilizzateˮ, i messaggi richiedono this( this.menu() ) Posso esportare solo dopo aver dichiarato la classe.
module.exports = Calcolatrice; //Va scritto alla fine del programma, dopo aver dichiarato tu
Non troviamo parole come void,public, private ma abbiamo comunque creato un oggetto. //Vedere codice riferimento con const required Allʼinterno del main definisco la classe main
let calcolatrice = new Calcolatrice();
In JavaScript gli errori vengono visti solo durante lʼesecuzione e non durante la compilazione. Esiste il toString(); In Js le regole di visibilità sono diverse infatti, la clase deve essere dichiarate prima della direttiva exports, tutto è pubblico per default, NOTA in ES sono state introdotte le proprietà private con la sintassi #nome.
Meccanismo per eseguire un metodo ogni colta che viene inviato un messaggio relativo ad una proprietà Sintassi:
get nomeProp(){ return
In generale è possibile riprodurre lʼimpostazione del codice di Java in JavaScript, ma attenzione alla natura non tipata del linguaggio, è molto più facile commettere errori che non vengono intercettati dal compilatore
JavaScript POO 4
Per capire meglio le stranezze bisogna capire la natura degli oggetti di JavaScript bisogna capire il JSON JavaScript Object Notation), notazione standard per rappresentare gli oggetti di JavaScript sotto forma di stringa. Quindi posso rappresentare diversi oggetti in maniera stringa, lʼintera stringa è tra apici singoli, e le proprietà e valori tra doppi, i nomi delle proprietà sono stringhe, le liste sono rappresentate tramite il []
{ "nome": "Mario", "cognome": "Rossi", "matricola": 12345, "esami":[ { "insegnamento": "PP", "crediti": 15, "voto": 27, "lode": false } { "insegnamento": "Analisi", "crediti": 12, "voto": 30, "lode": false } ] }
metodo JSON.parse(
let p = {"x":1, "y":2}
JavaScript POO 6
dallʼinterprete, ma sollevano eccezione se la funzione relativa non esiste.
Sono oggetti le cui proprietà sono denominato con indici interi : ‘0ʼ, ‘1ʼ, ecc. La proprietà length ha sempre valore pari al massimo indice delle proprietà 1
let array = ['a','b']; array[0] // a array.length // 2
Si possono analizzare tutte le proprietà di un oggetto tramite il ciclo for migliorato così da poter visitare tutte le chiavi presenti nel dizionario.
let o = { ... } for(let p in o) { console.log(o[p]); }
Gli editor di Js non forniscono supporto Si possono commettere molto facilmente errori nei messaggi in JavaScript s.lunghezza vs s.lunghezza() Per il compilatore il primo caso è accettabile e restituisce undefined Essendo un linguaggio interpretato, molti errori logici sono latenti.