JavaScript è un linguaggio di programmazione utilizzato comunemente come parte dell'esperienza di navigazione, permette di creareinterazioni con l'utente, controllare la navigazione, gestire la comunicazione asincrona, e modificare il contenuto del documento .Fonte: https://en.wikipedia.org/wiki/JavaScript
alert('Hello world')
console.log('Hello world')
<!doctype html> <html> <head></head> <body> <script> alert('Hello world') </script> </body> </html>
<!doctype html> <html> <head></head> <body> <script src="esempio.js"></script> </body> </html>
// esempio.js alert('Hello world')
Esistono due tipi di commenti:
// commento semplice
/* commento su diverse righe */
Numeri interi: | 192 |
Numeri float: | 1.4 |
Stringhe di testo: | "Hello World!", 'Hello World!' |
Valori logici: | true, false | espressioni regolari | /[A-Za-z]/ |
Valore nullo: | null |
Valore undefined: | undefined |
Gli identificatori in javascript cominciano con una lettera, una underline (_), o un carattere di dollaro ($); seguito da lettere, numeri, underline, e caratteri di dollaro
var contatore; var _indice; var $indice; var $__$__$;
abstract | else | instanceof | super |
boolean | enum | int | switch |
break | export | interface | synchronized |
byte | extends | let | this |
case | false | long | throw |
catch | final | native | throws |
char | finally | new | transient |
class | float | null | true |
const | for | package | try |
continue | function | private | typeof |
debugger | goto | protected | var |
default | if | public | void |
delete | implements | return | volatile |
do | import | short | while |
double | in | static | with |
E' possibile l'uso del carattere (;) per la separazione di frasi,si può omettere se queste si trovano su linee differenti (non fatelo!)
Gli interpreti di JavaScript trattano i fine linea come fine frase, se e solo se, la frase successiva non può interpretarsi come continuazione della precedente.
si possono individuare vari criteri per prendere una decisione.
Maggiori informazioni: Semicolons in JavaScript are optional
Esistono due categorie:
Tipi primitivi:
|
Tipi oggetto:
|
Esempi:
12 // numero intero in base decimale. 0345 // numero intero in base octal. 0xFF // numero intero in base hetxadecial. 3.141592654 // numero decimale. .234955 // numero decimale. 6.023e23 // numero decimale in notazione esponenziale.
Number è la rappresentazione di tipo oggetto di un tipo numerico.
Math è l'oggetto che concentra molte constanti e funzioni matematicas.
Date è l'oggetto utilizzato per la rappresentazione di date.
Internamente, questa rappresentazione è un numero che rappresenta i millisecondi trascorsi dalla data: 1 di gennaio del 1970.
Maggiori informazioni:
http://en.wikipedia.org/wiki/System_time
Si possono usare gli apici semplici o gli apici doppi come delimitatori validi per la dichiarazione di una variabile tipo stringa di testo.
Esempi:
var a='stringa di testo' var b="stringa di testo" var c='qui un "esempio"' var d="un esempio 'Più'"
\O The NULL character \b Backspace \t Horizontal tab \n Newline \v Vertical tab \f Form feed \r Carriage return \" Double quote \' Apostrophe or single quote \\ Backslash \x[XX] The Latin-1 \u[XXXX] The Unicode character
Una stringa può vedersi come un array di caratteri immutabile.
Esempi:
var a='stringa di testo' console.log(a[5]) // a
Funzioni di stringa
var s = "hello, world" s.charAt(0) // => "h" s.charAt(s.length-1) // => "d" s.substring(1,4) // => "ell" s.slice(1,4) // => "ell" s.slice(-3) // => "rld" s.indexOf("l") // => 2 s.lastIndexOf("l") // => 10 s.indexOf("l", 3) // => 3 s.split(", ") // => ["hello", "world"] s.replace("h", "H") // => "Hello, world" s.toUpperCase() // => "HELLO, WORLD"
var a=true var b=false
Son valori falsi i seguenti:
undefined | null |
0 | -0 |
NaN | '' |
String è la rappresentazione di tipo oggetto di una stringa.
Boolean è la rappresentazione di tipo oggetto di una variabile logica.
Rappresentano la assenza di un valore in una variabile o nel ritorno di una function.
var a=null var b=undefined
if(expresion){ frasi }
if(expresion){ frasi }else{ frasi }
if(expresion){ frasi }else if{ frasi }else{ frasi }
switch(expresion){ case 1: frasi break case n: frasi break default: frasi }
while(expresion){ frasi }
do { frasi while(expresion)
for(inizializzazione;valutatore;incrementatore){ frasi }
for(variabile in oggetto){ //...istruzioni }
for(variabile of collezione){ //...istruzioni }
try{ frasi }catch(e){ frasi }finally{ frasi }
Verifica se un oggetto è instanza di qualche prototipo.
Ritorna una stringa indicando il tipo di dato che ha una variabile.
Parola chiave per la dichiarazione di una variabile.
Operatore che rimuove proprietà di un oggetto.
Direttiva per l'interprete di JavaScript, che indica l'uso del modo strict.
Le funzioni se dichiarano con la parola riservata funzione.
function f(x,y){ return x+y }
Una funzione può essere assegnata a una variabile.
var f=function(x){ console.log(x) } f(10)
Come una funzione può essere assegnata a una variabile, è possibile che una funzione riceva altre funzioni come parte di suoi parametri.
function f(x,g){ return g(x) } var a=f(10,function(x){return x*2}) console.log(a) // 20
Inoltre una funzione può essere di forma anonima, E si può eseguire nella definizione.
var a=(function(x,y){ return x+y }(1,2)) console.log(a) // 3
Altra caratteristica importante sulle funzioni in JavaScript, è che può definirsi una funzione dentro un'altra funzione.
function a(){ var x=10 function b(){ return x+1 } return b() } console.log(a())
Come in Java, una funzione può essere invocata con più parametri di quelli definiti, o con meno.
Tutti i parametri che sono stati inviati a una funzione possono essere acceduti attraverso l'oggetto "arguments".
function a(){ console.log(arguments) } a(1,2,3,4,5,6)
Le variabili en JavaScript, hanno ambito di funzione, questo significa che tutte le variabili dichiarate in una funzione son visibili nel corpo della funzione. anche prima di essere dichiarate.
Più informazioni:
http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html
var a='asdf'; (function b(){ console.log(a) })() // asdf
var a='asdf'; (function b(){ console.log(a) var a='qwer' })() // undefined
Un oggetto è una valore composto, che aggrega molteplici valori, siano essi primitivi o altri tipi di collezione.
Un oggetto in JavaScript può essere definito in 3 modi:
E' una definizione di proprietà di tipo chiave:valore.
a={ x:1, y:[1,2,3,4,5], z:function(a){return a} }
Altra maniera per definire un oggetto è instanziando una classe di un tipo di oggetto pre-definito in JavaScript o con una propria definizione di classe.
a=new Object() b=new String('asdf')
Le variabili di un oggetto si possono accedere come se fossero array associativi:
a={x:1,y:2} console.log(a.x) console.log(a['x'])
Una classe in JavaScript è una collezione di oggetti che ereditano proprietà di un medesimo prototipo.
function A(){ this.a=10 this.b=11 } a=new A()
Un prototipo è un oggetto associato all'oggetto che sta definendo, e del quale va a ereditare proprietà.
E' stabilito quando l'oggetto è creato.
Si può accedere attraverso la variabile prototype
Si usa per aggregare funzioni a una definizione anche dopo aver istanziato l'oggetto.
a=new String('asdf') String.prototype.salutare=function(){ return 'hola' } console.log(a.salutare())
Questa non è una pratica raccomandata!
Maggiori informazioni: stackoverflow
può servire per realizzare ereditarietà tra oggetti.
function A(){ this.a=100 this.x=function(){ return this.a }}t function B(){this.b=100} B.prototype=new A() b=new B() console.log(b.x())
Costruisce un nuovo oggetto a partire da un prototipo stabilito.
function A(){ this.f=function(){return 'asdf'} } a=new A() b=Object.create(a) console.log(b.f())
Ritorna un array di nomi delle proprietà enumerabili di un oggetto.
function A(){ this.x=1 this.y=2 } console.log(Object.keys(new A()))
La classe Object, possiede vari metodi:
Ritorna la rappresentazione in stringa di un oggetto.
Ritorna la forma primitiva di un oggetto.
JSON, acronimo di JavaScript Object Notation, è un formato leggero per lo scambio di dati. JSON è un sottotipo della notazione literal di oggetti di JavaScript che non richiede l'uso di XML. Fonte: https://en.wikipedia.org/wiki/JSON
{"menu": { "id": "file", "value": "File", "popup": { "menuitem": [ {"value": "New", "onclick": "CreateNew()"}, {"value": "Open", "onclick": "Open()"}, {"value": "Close", "onclick": "Close()"} ] } }}
Esistono due metodi per la trasformazione tra JSON e Oggetti JavaScript.
Ritorna una stringa in formato JSON corrispondente ad un valore specificato.
Interpreta una stringa in formato JSON e ritorna il suo oggetto corrispondente.
L'oggetto Window è il più alto livello di oggetti JavaScript che corrispondono alla finestra del browser.
Sono funzioni invocate dopo un tempo determinato.
Pianifica la invocazione dopo un tempo determinato.
Pianifica l'invocazione dopo un intervallo di tempo.
Resetta i timer.
setTimeout(function(){alert('asdf')},10000)
setInterval(function(){alert('asdf')},10000)
array oggetto che rappresenta la url attuale.
back - forward - go
fornisce informazione relativa al browser e alla risoluzione.
Window fornisce funzioni per finestre di dialogo.
DOM (Document Object Model), è una interfaccia di programmazione per documenti in HTML e XML. Fornisce una rappresentazione strutturata del documento (in forma di una struttura di albero), e definisce un modo per accedervi, Inoltre può modificarne stile e contenuto.
DOM permette un accesso alla struttura di una pagina HTML mediante la mappatura degli elementi di questa pagina in un albero di nodi. Ogni elemento se converte in un nodo e ogni porzione di testo in un nodo di testo.
La manipolazione del contenuto nel browser dipende da un congiunto di funzioni e attributi che son provisti per l'oggetto document, che è di tipo HTMLDocument.
Maggiori informazioni: http://www.javascriptkit.com/domref/
Esistono molti metodi di selezione di elementi.
Addizionalmente ci sono selettori di tipo CSS.
Una volta stabilito un punto di partenza, si può percorrere la ramificazione
i nodi hanno alcune proprietà che si possono consultare, per vederne le caratteristiche.
Esistono metodi specifici per l'accesso agli attributi di un elemento.
Esistono metodi per la manipolazione del contenuto.
per accedere al contenuto di un elemento, esistono due metodi, dipende se si tratta come HTML Element o Node
Una volta visti i metodi per selezione e introspezione, vediamo come manipolare il DOM.
Esistono tre metodi per la creazione di nuovi nodi.
Ci sono alcune funzioni per la manipulazione di nodi dell'albero.
Esistono vari metodi utili per conoscere le posizioni degli elementi, E le loro dimensioni.
i form si possono accedere come qualsiasi altro elemento, Inoltre esiste il parametro 'document.forms'
questi si possono accedide attraverso suoi attributi name e id.
per accedere agli elementi del form, si utilizza la variabile 'elements'.
document.forms.name.element.input
per la modifica di proprietà CSS, si usa la propietà 'style'.
Inoltre è possibile strutturare un documento in modo che scambiarsi delle classi e questi riflettono cambi nella presentazione di documentos.
document.querySelector('selector').style
Un evento è qualcosa che scatena una azione specifica nel browser.
Tipicamente un evento accade quando un utente:
Esistono molte forme di aggiungere eventi ad una pagina.
Device-dependent input events. | Tastiera, mouse, dispositivi Touch. |
Device-independent input events | Click. |
User interface events | Fuoco, cambi, submit. |
State-change events | Cambio di stato in generale. |
API-specific events | DnD, Players. |
Timers and error handlers | Temporizzatori, errori. |
Esistono due metodi per registrare eventi.
b.onclick=function(){console.log('asdf')} b.addEventListener('click',function(){ console.log('asd') },false)
Maggiori informazioni: http://www.quirksmode.org/js/events_mouse.html
AJAX (Asynchronous JavaScript And XML), è una tecnica di sviluppo web per creare applicazioni interattive. Con AJAX è possibile realizzare cambi sulle pagine senza necesità di recaricarle completamente, migliorando la interattività, velocità e usabilità nelle applicazioni.Fonte: https://en.wikipedia.org/wiki/AJAX
var ajax=new XMLHttpRequest() ajax.open('get',url) ajax.onload=function(){} ajax.send()