SlideShare a Scribd company logo
1 of 156
Download to read offline
Dr.SabinBuragawww.purl.org/net/busaco
Dezvoltarea aplicațiilor Web
la nivel de client
{}
programare Web
limbajul JavaScript – o prezentare generală
Dr.SabinBuragawww.purl.org/net/busaco
„Un arcaș bun atinge ținta
chiar înainte de a trage.”
Ch’Ao Pu-Che
Dr.SabinBuragawww.purl.org/net/busaco
Inventat de Brendan Eich (1995)
denumit inițial Mocha, apoi LiveScript
Dr.SabinBuragawww.purl.org/net/busaco
Implementat în premieră de browser-ul
Netscape Navigator
www.w3.org/community/webed/wiki/A_Short_History_of_JavaScript
Dr.SabinBuragawww.purl.org/net/busaco
Adaptat de Microsoft: JScript (1996)
Dr.SabinBuragawww.purl.org/net/busaco
Standardizat în 1997 de ECMA
European Computer Manufacturers Association
ECMAScript
ECMA-262
www.ecma-international.org/publications/standards/Ecma-262.htm
Dr.SabinBuragawww.purl.org/net/busaco
Standardizat în 1997 de ECMA
European Computer Manufacturers Association
ECMAScript
versiunea standardizată în vigoare: 5.1 (iunie 2011)
referința de bază: https://developer.mozilla.org/JavaScript
Dr.SabinBuragawww.purl.org/net/busaco
Standardizat în 1997 de ECMA
European Computer Manufacturers Association
ECMAScript
versiunea cea mai recentă: 6.0 – ES6 (ECMAScript 2015)
git.io/es6features detalii într-un
curs viitor
Dr.SabinBuragawww.purl.org/net/busaco
Limbaj de tip script (interpretat)
destinat să manipuleze, să automatizeze
și să integreze funcționalitățile
oferite de un anumit sistem
Dr.SabinBuragawww.purl.org/net/busaco
Limbaj de tip script (interpretat)
nu necesită intrări/ieșiri în mod implicit
Dr.SabinBuragawww.purl.org/net/busaco
Adoptă diverse paradigme de programare
imperativă
à la C
Dr.SabinBuragawww.purl.org/net/busaco
Adoptă diverse paradigme de programare
funcțională
λ calculfuncții anonime, închideri (closures),…
Dr.SabinBuragawww.purl.org/net/busaco
Adoptă diverse paradigme de programare
pseudo-obiectuală
via prototipuri
(obiectele moștenesc alte obiecte, nu clase)
Dr.SabinBuragawww.purl.org/net/busaco
Adoptă diverse paradigme de programare
dinamică
variabilele își pot schimba tipul
pe parcursul rulării programului
Dr.SabinBuragawww.purl.org/net/busaco
Cum putem executa programele JavaScript?
Dr.SabinBuragawww.purl.org/net/busaco
Mediu de execuție (host-environment)
navigator Web
permite rularea de aplicații Web la nivelul unei platforme
(un sistem de operare)
Dr.SabinBuragawww.purl.org/net/busaco
Mediu de execuție (host-environment)
navigator Web
permite rularea de aplicații Web la nivelul unei platforme
(un sistem de operare)
inclusiv pe dispozitive mobile (Android, iOS, Firefox OS,
Fire OS (Kindle Fire), Windows Phone,…),
console de jocuri și altele
Dr.SabinBuragawww.purl.org/net/busaco
Mediu de execuție (host-environment)
navigator Web
„injectarea” de cod JavaScript
în documentele HTML via elementul <script>
Dr.SabinBuragawww.purl.org/net/busaco
Mediu de execuție (host-environment)
navigator Web
„injectarea” de cod JavaScript
în documentele HTML via elementul <script>
cod extern referit printr-un URL
vs. cod inclus direct în pagina Web
Dr.SabinBuragawww.purl.org/net/busaco
Mediu de execuție (host-environment)
independent de navigatorul Web
platforme de dezvoltare de aplicații distribuite: Node.js
servere de baze de date – e.g., Apache CouchDB
componente ale sistemului de operare
aplicații de sine-stătătoare – e.g., Adobe Creative Suite
Dr.SabinBuragawww.purl.org/net/busaco
Cuvinte rezervate:
break else new var case finally return void catch
for switch while continue function this with default
if throw delete in try do instanceof typeof
caracteristici: sintaxa
Dr.SabinBuragawww.purl.org/net/busaco
Alte cuvinte rezervate:
abstract enum int short boolean export interface
static byte extends long super char final native
synchronized class float package throws const
goto private transient debugger implements
protected volatile double import public
caracteristici: sintaxa
Dr.SabinBuragawww.purl.org/net/busaco
Number
reprezentare în dublă precizie
stocare pe 64 biți – standardul IEEE 754
caracteristici: tipuri de date
developer.mozilla.org/Web/JavaScript/Reference/Global_Objects/Number
Dr.SabinBuragawww.purl.org/net/busaco
String
secvențe de caractere Unicode
fiecare caracter ocupă 16 biți (UTF-16)
caracteristici: tipuri de date
developer.mozilla.org/Web/JavaScript/Reference/Global_Objects/String
Dr.SabinBuragawww.purl.org/net/busaco
Boolean
expresii ce se pot evalua ca fiind true/false
caracteristici: tipuri de date
developer.mozilla.org/Web/JavaScript/Reference/Global_Objects/Boolean
Dr.SabinBuragawww.purl.org/net/busaco
Object
aproape totul e considerat ca fiind obiect,
inclusiv funcțiile
caracteristici: tipuri de date
Dr.SabinBuragawww.purl.org/net/busaco
Null
semnifică „nicio valoare”
caracteristici: tipuri de date
Dr.SabinBuragawww.purl.org/net/busaco
Undefined
are semnificația „nicio valoare asignată încă”
caracteristici: tipuri de date
Dr.SabinBuragawww.purl.org/net/busaco
Nu există valori întregi
caracteristici: tipuri de date
Dr.SabinBuragawww.purl.org/net/busaco
Nu există valori întregi
convertirea unui șir în număr: parseInt ()
parseInt ("123")  123
parseInt ("11", 2)  3
caracteristici: tipuri de date
indică baza
de numerație
Dr.SabinBuragawww.purl.org/net/busaco
„Valoarea” NaN (“not a number”)
parseInt ("Salut")  NaN
isNaN (NaN + 3)  true
caracteristici: tipuri de date
Dr.SabinBuragawww.purl.org/net/busaco
Valori speciale:
Infinity
–Infinity
caracteristici: tipuri de date
Dr.SabinBuragawww.purl.org/net/busaco
Operații avansate cu numere se pot realiza
via obiectul predefinit Math
caracteristici: tipuri de date
Dr.SabinBuragawww.purl.org/net/busaco
Operații avansate cu numere se pot realiza
via obiectul predefinit Math
constante predefinite:
Math.PI
Math.E
Math.LN10
etc.
caracteristici: tipuri de date
Dr.SabinBuragawww.purl.org/net/busaco
Operații avansate cu numere se pot realiza
via obiectul predefinit Math
metode:
Math.abs(x) Math.ceil(x) Math.cos(x) Math.exp(x) Math.floor(x)
Math.log(x) Math.max(x, ..) Math.min(x, ..) Math.pow(x, y)
Math.random() Math.round(x) Math.sin(x) Math.sqrt(x) etc.
caracteristici: tipuri de date
developer.mozilla.org/Web/JavaScript/Reference/Global_Objects/Math
Dr.SabinBuragawww.purl.org/net/busaco
Un caracter reprezintă un șir de lungime 1
caracteristici: tipuri de date
Dr.SabinBuragawww.purl.org/net/busaco
Șirurile sunt obiecte
"Salut".length  5
caracteristici: tipuri de date
Dr.SabinBuragawww.purl.org/net/busaco
Metode utile
pentru procesarea șirurilor de caractere:
String.charAt(pos) String.charCodeAt(pos) String.concat(s1, ..)
String.indexOf(s1, start)
String.match(regexp) String.replace(search, replace)
String.slice(start, end) String.split(separator, limit)
String.substring(start, end)
String.toLowerCase() String.toUpperCase()
etc.
caracteristici: tipuri de date
Dr.SabinBuragawww.purl.org/net/busaco
Valorile 0, "", NaN, null, undefined
sunt interpretate ca fiind false
!!234  true
caracteristici: tipuri de date
Dr.SabinBuragawww.purl.org/net/busaco
Variabilele se declară cu var
var marime;
var numeAnimal = "Tux";
variabilele declarate fără valori asignate,
se consideră undefined
caracteristici: variabile
Dr.SabinBuragawww.purl.org/net/busaco
Dacă nu se folosește var,
atunci variabila este considerată globală
de evitat așa ceva!
caracteristici: variabile
Dr.SabinBuragawww.purl.org/net/busaco
Valorile sunt „legate” tardiv la variabile
(late binding)
caracteristici: variabile
Dr.SabinBuragawww.purl.org/net/busaco
Pentru numere: + – * / %
De asignare: += –= *= /= %=
Incrementare și decrementare: ++ – –
Concatenare de șiruri: "Java" + "Script"  "JavaScript"
caracteristici: operatori
Dr.SabinBuragawww.purl.org/net/busaco
Conversia tipurilor se face „din zbor” (dinamic)
"3" + 4 + 5  "345"
3 + 4 + "5"  "75"
adăugând un șir vid la o expresie,
o convertim pe aceasta la string
caracteristici: operatori
Dr.SabinBuragawww.purl.org/net/busaco
Comparații: < > <= >= (numere și șiruri)
egalitatea valorilor se testează cu == și !=
1 == true  true
caracteristici: operatori
Dr.SabinBuragawww.purl.org/net/busaco
Comparații: < > <= >= (numere și șiruri)
egalitatea valorilor se testează cu == și !=
1 == true  true
a se folosi: 1 === true  false
caracteristici: operatori
inhibă conversia
tipurilor de date
Dr.SabinBuragawww.purl.org/net/busaco
Aflarea tipului unei expresii: operatorul typeof
typeof "Tux"  string
caracteristici: operatori
operand rezultat
undefined 'undefined'
null 'object'
de tip Boolean 'boolean'
de tip Number 'number'
de tip String 'string'
Function 'function'
orice alte valori 'object'
Dr.SabinBuragawww.purl.org/net/busaco
Operatorii logici && și ||
var nume = unNume || "Implicit";
caracteristici: operatori
Dr.SabinBuragawww.purl.org/net/busaco
Operatorul ternar de test ? :
var prezență = (studenți > 33) ? "Prea mulți" : "Cam puțini…";
caracteristici: operatori
Dr.SabinBuragawww.purl.org/net/busaco
Testare: if … else, switch
pentru switch, sunt permise expresii la fiecare case
(testarea se realizează cu operatorul ===)
switch (2 + 3) { /* sunt permise expresii */
case 4 + 1 : egalitate ();
break;
default : absurd (); // nu se apelează niciodată
}
caracteristici: control
Dr.SabinBuragawww.purl.org/net/busaco
Ciclare: while, do … while, for
do {
var nume = preiaNume ();
} while (nume != "");
for (var contor = 0; contor < 33; contor++) {
// de 33 de ori…
}
caracteristici: control
Dr.SabinBuragawww.purl.org/net/busaco
Excepții: try … catch … finally
try {
// Linii "periculoase" ce pot cauza excepții
} catch (eroare) {
// Linii rulate la apariția unei/unor excepții
} finally {
// Linii care se vor executa la final
}
caracteristici: control
Dr.SabinBuragawww.purl.org/net/busaco
Excepții: try … catch … finally
try {
// Linii "periculoase" ce pot cauza excepții
} catch (eroare) {
// Linii rulate la apariția unei/unor excepții
} finally {
// Linii care se vor executa la final
}
emiterea unei excepții: throw
throw new Error ("O eroare de-a noastră...");
caracteristici: control
Dr.SabinBuragawww.purl.org/net/busaco
Perechi nume—valoare
caracteristici: obiecte
Dr.SabinBuragawww.purl.org/net/busaco
Perechi nume—valoare
tabele de dispersie (hash) în C/C++
tablouri asociative în Perl, PHP sau Ruby
HashMaps în Java
“everything except primitive values is an object”
caracteristici: obiecte
Dr.SabinBuragawww.purl.org/net/busaco
Perechi nume—valoare
numele este desemnat de un șir de caractere
(i.e., expresie de tip String)
valoarea poate fi de orice tip,
inclusiv null sau undefined
caracteristici: obiecte
Dr.SabinBuragawww.purl.org/net/busaco
Obiect  colecție de proprietăți,
având mai multe atribute
caracteristici: obiecte
Dr.SabinBuragawww.purl.org/net/busaco
Obiect  colecție de proprietăți,
având mai multe atribute
proprietățile pot conține alte obiecte,
valori primitive sau metode
caracteristici: obiecte
Dr.SabinBuragawww.purl.org/net/busaco
Obiecte predefinite:
Global Object
Function Array
String RegExp
Boolean Number
Math Date
caracteristici: obiecte
de studiat developer.mozilla.org/JavaScript/Reference/Global_Objects
Dr.SabinBuragawww.purl.org/net/busaco
Obiecte fundamentale vizând gestionarea erorilor
Error
EvalError
RangeError
ReferenceError
SyntaxError
TypeError
URIError
caracteristici: obiecte
Dr.SabinBuragawww.purl.org/net/busaco
Create prin intermediul operatorului new:
var ob = new Object();
var ob = { }; // echivalent cu linia anterioară
caracteristici: obiecte
se preferă această sintaxă
Dr.SabinBuragawww.purl.org/net/busaco
Accesarea proprietăților – operatorul .
ob.nume = "Tux";
var nume = ob.nume;
caracteristici: obiecte
Dr.SabinBuragawww.purl.org/net/busaco
Accesarea proprietăților – operatorul .
ob.nume = "Tux";
var nume = ob.nume;
echivalent cu:
ob["nume"] = "Tux";
var nume = ob["nume"];
caracteristici: obiecte
Dr.SabinBuragawww.purl.org/net/busaco
Declarare + asignare:
var pinguin = {
nume: "Tux",
proprietati: {
culoare: "verde",
marime: 17
}
}
caracteristici: obiecte
Dr.SabinBuragawww.purl.org/net/busaco
Declarare + asignare:
var pinguin = {
nume: "Tux",
proprietati: {
culoare: "verde",
marime: 17
}
}
caracteristici: obiecte
accesare:
pinguin.proprietati.marime  17
pinguin["proprietati"]["culoare"]  verde
Dr.SabinBuragawww.purl.org/net/busaco
var facultyContactInfo = {
// numele proprietăților sunt încadrate de ghilimele
"official-phone" : '+40232201090',
city : 'Iasi', // dacă numele e identificator valid, ghilimelele pot fi omise
'street' : 'Berthelot Street',
'number' : 16, // pot fi folosite orice tipuri de date primitive
"class" : "new", // cuvintele rezervate se plasează între ghilimele
coord : { // obiectele pot conține alte obiecte (nested objects)
'geo' : { 'x': 47.176591, 'y': 27.575930 }
},
age : Math.floor ("24.7") // pot fi invocate metode de calcul a valorilor
};
console.log (facultyContactInfo.coord["geo"].y); // obținem 27.57593
adaptare după Sergiu Dumitriu (2012)
Dr.SabinBuragawww.purl.org/net/busaco
Iterarea proprietăților – considerate chei:
var pinguin = { 'nume': 'Tux', 'marime': 17 };
for (var proprietate in pinguin) {
afiseaza (proprietate + ' = ' + pinguin[proprietate]);
}
caracteristici: obiecte
Dr.SabinBuragawww.purl.org/net/busaco
Eliminarea proprietăților se realizează cu delete
var pinguin = { 'nume': 'Tux', 'marime': 17 };
pinguin.nume = undefined; // nu șterge proprietatea
delete pinguin.marime; // eliminare efectivă
for (var prop in pinguin) {
console.log (prop + "=" + pinguin[prop]);
}
// va apărea doar "nume=undefined"
caracteristici: obiecte
Dr.SabinBuragawww.purl.org/net/busaco
Tipuri speciale de obiecte
proprietățile (cheile) sunt numere,
nu șiruri de caractere
caracteristici: tablouri
developer.mozilla.org/Web/JavaScript/Reference/Global_Objects/Array
Dr.SabinBuragawww.purl.org/net/busaco
Se poate utiliza sintaxa privitoare la obiecte:
var animale = new Array ();
animale[0] = "pinguin";
animale[1] = "omida";
animale[2] = "pterodactil";
animale.length  3
caracteristici: tablouri
Dr.SabinBuragawww.purl.org/net/busaco
Se poate utiliza sintaxa privitoare la obiecte:
var animale = new Array ();
animale[0] = "pinguin";
animale[1] = "omida";
animale[2] = "pterodactil";
animale.length  3
notație alternativă – preferată:
var animale = ["pinguin", "omida", "pterodactil"];
caracteristici: tablouri
Dr.SabinBuragawww.purl.org/net/busaco
Elementele pot aparține
unor tipuri de date eterogene
var animale = [33, "vierme", false, "gaga"];
caracteristici: tablouri
Dr.SabinBuragawww.purl.org/net/busaco
Tablourile pot avea „găuri” (sparse arrays):
var animale = ["pinguin", "omida", "pterodactil"];
animale[33] = "om";
animale.length  34
typeof animale[13]  undefined
caracteristici: tablouri
Dr.SabinBuragawww.purl.org/net/busaco
Tablourile pot avea „găuri” (sparse arrays):
var animale = ["pinguin", "omida", "pterodactil"];
animale[33] = "om";
animale.length  34
typeof animale[13]  undefined
pentru a adăuga elemente putem recurge la:
animale[animale.length] = altAnimal;
caracteristici: tablouri
Dr.SabinBuragawww.purl.org/net/busaco
var vector = [ ];
vector[0] = "zero";
vector[new Date().getTime()] = "now";
vector[3.14] = "pi";
for (var elem in vector) {
console.log ("vector[" + elem + "] = " + vector[elem] +
", typeof( " + elem +") == " + typeof (elem));
}
caracteristici: tablouri – exemplu
adaptare după John Kugelman (2009)
Dr.SabinBuragawww.purl.org/net/busaco
rezultatul obținut în urma rulării programului JavaScript
via aplicația JS Bin
http://jsbin.com/
Dr.SabinBuragawww.purl.org/net/busaco
Interări:
for (var it = 0; it < animale.length; it++) {
// de prelucrat animale[it]
}
caracteristici: tablouri
Dr.SabinBuragawww.purl.org/net/busaco
Interări:
for (var it = 0; it < animale.length; it++) {
// de prelucrat animale[it]
}
// variantă mai bună
for (var it = 0, lung = animale.length; it < lung; it++) {
// de prelucrat animale[it]
}
caracteristici: tablouri
de ce?
Dr.SabinBuragawww.purl.org/net/busaco
Metode utile:
Array.toString() Array.concat(item, ..) Array.join(separator)
Array.pop() Array.push(item, ..) Array.reverse()
Array.shift() Array.unshift([item]..)
Array.sort(cmpfn) Array.splice(start, delcount, [item]..)
etc.
caracteristici: tablouri
Dr.SabinBuragawww.purl.org/net/busaco
(în loc de) pauză
Dr.SabinBuragawww.purl.org/net/busaco
Definite via function
function transformaPixeliInPuncte (px) {
var puncte = px * 300;
return puncte;
}
caracteristici: funcții
developer.mozilla.org/Web/JavaScript/Reference/Global_Objects/Function
Dr.SabinBuragawww.purl.org/net/busaco
Dacă nu este întors nimic în mod explicit,
valoarea de retur se consideră undefined
caracteristici: funcții
Dr.SabinBuragawww.purl.org/net/busaco
Parametrii de intrare pot lipsi,
fiind considerați undefined
caracteristici: funcții
Dr.SabinBuragawww.purl.org/net/busaco
Pot fi transmise mai multe argumente,
cele în surplus fiind ignorate
transformaPixeliInPuncte (10, 7)  3000
caracteristici: funcții
Dr.SabinBuragawww.purl.org/net/busaco
Argumentele primite de o funcție se accesează
via tabloul arguments – în prezent, a se evita:
function aduna () {
var suma = 0;
for (var i = 0, j = arguments.length; i < j; i++) {
suma += arguments[i];
}
return suma;
}
caracteristici: funcții
Dr.SabinBuragawww.purl.org/net/busaco
Funcțiile sunt tot obiecte
astfel, pot fi specificate funcții anonime
caracteristici: funcții
expresii
lambda
Dr.SabinBuragawww.purl.org/net/busaco
Funcțiile sunt tot obiecte
astfel, pot fi specificate funcții anonime
în acest sens, JavaScript este un limbaj funcțional
caracteristici: funcții
expresii
lambda
Dr.SabinBuragawww.purl.org/net/busaco
var media = function () { // calculul mediei a N numere
var suma = 0;
for (var iter = 0,
lung = arguments.length;
iter < lung; iter++) {
suma += arguments[iter];
}
return suma / arguments.length;
};
caracteristici: funcții
Dr.SabinBuragawww.purl.org/net/busaco
var media = function () { // calculul mediei a N numere
var suma = 0;
for (var iter = 0,
lung = arguments.length;
iter < lung; iter++) {
suma += arguments[iter];
}
return suma / arguments.length;
};
caracteristici: funcții
variabilele declarate
în funcție nu vor fi
accesibile din exterior,
fiind „închise”

funcție closure
Dr.SabinBuragawww.purl.org/net/busaco
console.log ( media (9, 10, 7, 8, 7) )  8.2
Dr.SabinBuragawww.purl.org/net/busaco
precizați ce efect vor avea liniile de cod următoare:
console.log ( typeof (media) );
console.log ( media() );
Dr.SabinBuragawww.purl.org/net/busaco
variabila media este de tip function
apelul media() întoarce valoarea NaN
Dr.SabinBuragawww.purl.org/net/busaco
/* determină numărul caracterelor din nodurile text
ale arborelui DOM-ului asociat unui document */
function numaraCaractereDinNoduriText (element) {
if (element.nodeType == 3) { // nod text (din DOM)
return element.nodeValue.length;
}
var contor = 0;
// recursiv, numărăm caracterele fiecărui nod copil
// al arborelui DOM cu rădăcina ‘element’
for (var it = 0, copil; copil = element.childNodes[it]; it++) {
contor += numaraCaractereDinNoduriText (copil);
}
return contor;
}
vezi cele
discutate la DOM
funcții recursive în JavaScript
Dr.SabinBuragawww.purl.org/net/busaco
// varianta folosind funcții anonime
var nrCaractDoc = (function (element) {
if (element.nodeType == 3) { // nod text
return element.nodeValue.length;
}
var contor = 0;
for (var it = 0, copil; copil = element.childNodes[it]; it++) {
contor += arguments.callee (copil);
}
return contor;
}) (xml.root);
furnizează care-i
funcția apelantă
Dr.SabinBuragawww.purl.org/net/busaco
Exemplificare:
dorim să procesăm – via funcții –
caracteristici ale unor animale
caracteristici: de la funcții la clase
Dr.SabinBuragawww.purl.org/net/busaco
function creeazaAnimal (nume, marime) {
return { nume: nume, marime: marime }
}
function oferaNume (animal) {
return animal.nume;
}
function oferaMarime (animal) {
return animal.marime;
}
caracteristici: de la funcții la clase
Dr.SabinBuragawww.purl.org/net/busaco
function creeazaAnimal (nume, marime) {
return { nume: nume, marime: marime }
}
function oferaNume (animal) {
return animal.nume;
}
function oferaMarime (animal) {
return animal.marime;
}
var tux = creeazaAnimal ("Tux", 17);
oferaMarime (tux)  17
caracteristici: de la funcții la clase
Dr.SabinBuragawww.purl.org/net/busaco
O „clasă” referitoare la animale:
function creeazaAnimal (nume, marime) {
return {
nume: nume, // date-membre
marime: marime,
oferaNume: function () { // metodă de furnizare a numelui
return animal.nume;
},
oferaMarime: function () { // o altă metodă
return animal.marime;
}
}
}
caracteristici: de la funcții la clase
Dr.SabinBuragawww.purl.org/net/busaco
Dorim să apelăm metodele definite:
var tux = creeazaAnimal ("Tux", 17);
tux.oferaMarime ()

ReferenceError: animal is not defined
caracteristici: de la funcții la clase
Dr.SabinBuragawww.purl.org/net/busaco
function Animal (nume, marime) {
this.nume = nume; // date-membre
this.marime = marime;
this.oferaNume = function () { // metodă
return this.nume;
};
this.oferaMarime = function () { // metodă
return this.marime;
};
}
caracteristici: de la funcții la clase
creational pattern
pseudo-clase
(utilizarea
constructorilor)
Dr.SabinBuragawww.purl.org/net/busaco
Operatorul new creează un nou obiect vid și
apelează funcția specificată cu this setat pe acest obiect
aceste funcții se numesc constructori,
trebuie apelate via new
și, prin convenție, au numele scris cu literă mare
caracteristici: funcții & obiecte
Dr.SabinBuragawww.purl.org/net/busaco
Față de alte limbaje de programare,
obiectul curent – referit cu this –
este setat ca fiind obiectul global
de exemplu, în browser, reprezintă fereastra curentă
în care este redat documentul: this  window
caracteristici: de la funcții la clase
Dr.SabinBuragawww.purl.org/net/busaco
caracteristici: de la funcții la clase
trasarea pas-cu-pas a execuției programului, cu inspectarea valorilor
variabilelor, via www.pythontutor.com/visualize.html#py=js
// instanțierea unui obiect
var tux = new Animal ("Tux", 17);
console.log (tux.oferaNume ());
var jox = tux;
console.log (jox.oferaNume ());
// alt obiect
var pax = new Animal ("Pax", 15);
pax.marime = 21;
console.log (pax.oferaMarime ());
Dr.SabinBuragawww.purl.org/net/busaco
Metodele pot fi declarate și în exteriorul constructorului
function oferaNumeAnimal () {
return this.nume;
}
function Animal (nume, marime) {
this.nume = nume;
this.marime = marime;
this.oferaNume = oferaNumeAnimal; // referă funcția de mai sus
}
caracteristici: funcții & obiecte
Dr.SabinBuragawww.purl.org/net/busaco
Orice obiect deține trei tipuri de proprietăți:
named data property
o proprietate având asignată o valoare
named accessor property
de tip setter/getter pentru a stabili/accesa o valoare
internal property
folosită exclusiv de procesorul ECMAScript (JavaScript)
caracteristici: proprietăți
Dr.SabinBuragawww.purl.org/net/busaco
Fiecare proprietate are asociate atributele:
[[Value]] – desemnează valoarea curentă a proprietății
[[Writable]] – indică dacă o proprietate
poate să-și modifice valoarea
[[Get]] și [[Set]] – funcții opționale pentru a oferi/stabili
valoarea unei proprietăți de tip accessor
[[Enumerable]] – specifică dacă numele proprietății
va fi disponibil într-o buclă for-in
[[Configurable]] – indică dacă proprietatea
poate fi ștearsă ori redefinită
caracteristici: proprietăți
Dr.SabinBuragawww.purl.org/net/busaco
proprietăți interne importante (folosite de procesorul
ECMAScript, dar inaccesibile la nivel de program)
[[Prototype]] definește ierarhiilor de obiecte
[[Get]] [[Put]] [[CanPut]] pentru accesarea valorilor
[[HasProperty]]
[[DefineOwnProperty]]
[[GetProperty]]
[[GetOwnProperty]]
[[Delete]]
manipularea proprietăților
[[Extensible]] indică obiectele ce pot fi extinse
[[Construct]]
[[Call]]
asociate obiectelor executabile
(funcții)
[[Code]]
[[Scope]]
desemnează codul și contextul
unei obiect de tip funcție
Dr.SabinBuragawww.purl.org/net/busaco
// crearea unei proprietăți simple stocând date
// (writable, enumerable, configurabile)
obiect.numeProprietate = 33;
// crearea via API-ul intern a unei proprietăți stocând date
Object.defineProperty (obiect, "numeProprietate", {
value: 33, writable: true, enumerable: true, configurable: true }
)
caracteristici: proprietăți
Dr.SabinBuragawww.purl.org/net/busaco
proprietățile interne ale obiectelor definite
http://www.objectplayground.com/
Dr.SabinBuragawww.purl.org/net/busaco
Deoarece orice obiect deține în mod implicit
proprietatea prototype,
structura unei clase poate fi extinsă ulterior
caracteristici: prototipuri
developer.mozilla.org/Web/JavaScript/Reference/Global_Objects/Object/prototype
Dr.SabinBuragawww.purl.org/net/busaco
Deoarece orice obiect deține în mod implicit
proprietatea prototype,
structura unei clase poate fi extinsă ulterior
un prototip e o proprietate oferind o legătură ascunsă
către obiectul de care aparține
caracteristici: prototipuri
Dr.SabinBuragawww.purl.org/net/busaco
Dacă se încearcă accesarea unui element inexistent
în cadrul unui obiect dat,
se va verifica lanțul de prototipuri (prototype chain)
caracteristici: prototipuri
Dr.SabinBuragawww.purl.org/net/busaco
function Animal (nume, marime) { // definiție inițială
this.nume = nume;
this.marime = marime;
}
// pe baza protipurilor, definim noi metode
Animal.prototype.oferaNume = function () {
return this.nume;
};
Animal.prototype.oferaMarime = function () {
return this.marime;
};
// instanțiem un obiect de tip Animal
var tux = new Animal ("Tux", 17);
Dr.SabinBuragawww.purl.org/net/busaco
Dr.SabinBuragawww.purl.org/net/busaco
Pentru a cunoaște tipul unui obiect
(pe baza constructorului și a ierarhiei de prototipuri)
se folosește operatorul instanceof
caracteristici: prototipuri
Dr.SabinBuragawww.purl.org/net/busaco
var marimi = [17, 20, 7, 14];
marimi instanceof Array  true
marimi instanceof Object  true
marimi instanceof String  false
var tux = new Animal ("Tux", 17);
tux instanceof Object  true
tux instanceof Array  false
caracteristici: prototipuri
Dr.SabinBuragawww.purl.org/net/busaco
Adăugarea unei metode se realizează via prototype
Animal.prototype.oferaNumeMare = function () {
return this.nume.toUpperCase ();
};
tux.oferaNumeMare ()  "TUX"
caracteristici: extinderea claselor
Dr.SabinBuragawww.purl.org/net/busaco
Pot fi extinse și obiectele predefinite:
// adăugăm o metodă obiectului String
String.prototype.inverseaza = function () {
var inv = '';
for (var iter = this.length - 1; iter >= 0; iter--) { // inversăm șirul…
inv += this[iter];
}
return inv;
};
"Web".inverseaza ()  "beW"
caracteristici: extinderea claselor
Dr.SabinBuragawww.purl.org/net/busaco
Cel mai general prototype este cel al lui Object
una dintre metodele disponibile – predefinite –
este toString() care poate fi suprascrisă (over-ride)
caracteristici: extinderea claselor
Dr.SabinBuragawww.purl.org/net/busaco
var tux = new Animal ("Tux", 17);
tux.toString ()  [object Object]
Animal.prototype.toString = function () {
return '<animal>' + this.oferaNume () + '</animal>';
};
tux.toString ()  "<animal>Tux</animal>"
caracteristici: extinderea claselor
Dr.SabinBuragawww.purl.org/net/busaco
Dr.SabinBuragawww.purl.org/net/busaco
Atenție la pericole!
de exemplu, comportamentul diferit al construcției
for (var proprietate in obiect)
caracteristici: extinderea claselor
Dr.SabinBuragawww.purl.org/net/busaco
Șablon general:
ClasaDeBaza = function () { /* … */ };
SubClasa = function () { /* … */ };
SubClasa.prototype = new ClasaDeBaza ();
caracteristici: extinderea claselor
Dr.SabinBuragawww.purl.org/net/busaco
Deoarece o funcție reprezintă un obiect, poate fi:
stocată ca valoare (asociată unei variabile)
pasată ca argument al unei alte funcții
întoarsă de o funcție – fiind argument pentru return
caracteristici: funcții de nivel înalt
Dr.SabinBuragawww.purl.org/net/busaco
Dorim să calculăm greutatea unui animal,
după formula greutate = marime * 33
varianta clasică:
var marimi = [17, 20, 7, 14];
var greutati = [ ];
for (var contor = 0; contor < marimi.length; contor++) {
greutati[contor] = marimi[contor] * 33;
}
caracteristici: funcții de nivel înalt
Dr.SabinBuragawww.purl.org/net/busaco
Varianta îmbunătățită – mai generală:
function genereazaTablouGreutati (tablou, calcul) {
var rezultat = [ ];
for (var contor = 0; contor < tablou.length; contor++) {
rezultat[contor] = calcul (tablou[contor]);
}
return rezultat;
}
function calculGreutate (marime) {
return marime * 33;
}
var greutati = genereazaTablouGreutati (marimi, calculGreutate);
referim funcția
ce va realiza calculul
Dr.SabinBuragawww.purl.org/net/busaco
Varianta îmbunătățită – mai generală:
function genereazaTablouGreutati (tablou, calcul) {
var rezultat = [ ];
for (var contor = 0; contor < tablou.length; contor++) {
rezultat[contor] = calcul (tablou[contor]);
}
return rezultat;
}
function calculGreutate (marime) {
return marime * 33;
}
var greutati = genereazaTablouGreutati (marimi, calculGreutate);
calcul e variabilă
de tip funcție
fiind funcție,
se poate apela
Dr.SabinBuragawww.purl.org/net/busaco
a se consulta și
exemplele din arhiva
asociată acestui curs
Dr.SabinBuragawww.purl.org/net/busaco
JavaScript oferă un singur spațiu de nume,
la nivel global
conflicte privind denumirea funcțiilor/variabilelor
specificate de programe diferite,
concepute de mai multi dezvoltatori
caracteristici: încapsulare
Dr.SabinBuragawww.purl.org/net/busaco
Nu trebuie afectat spațiul de nume global,
păstrându-se codul-sursă la nivel privat
caracteristici: încapsulare
Dr.SabinBuragawww.purl.org/net/busaco
Codul poate fi complet încapsulat
via funcții anonime
care „păstrează” construcțiile la nivel privat
caracteristici: încapsulare
Dr.SabinBuragawww.purl.org/net/busaco
Declararea imbricată – ca expresii de tip funcție –
a funcțiilor anonime are denumirea closures
https://developer.mozilla.org/en/JavaScript/Guide/Closures
caracteristici: closures
închideri
Dr.SabinBuragawww.purl.org/net/busaco
// specificarea unei expresii de tip funcție
( function () {
// variabilele & funcțiile vor fi vizibile doar aici
// variabilele globale pot fi accesate
} ( ) );
caracteristici: closures
Dr.SabinBuragawww.purl.org/net/busaco
var cod = (function () {
var priv = 0; // variabilă privată
function start (x) {
// ... poate accesa 'priv'
// și funcția 'faCeva'
}
function faAia (param) {
// ... invizibilă din afară
}
function faCeva (x, y) {
// ...
}
return {
// sunt publice doar
// funcțiile 'start' și 'faCeva'
'start': start,
'faCeva': faCeva
}
}) ();
cod.start (arg); // apelăm 'start'
Dr.SabinBuragawww.purl.org/net/busaco
var cod = (function () {
var priv = 0; // variabilă privată
function start (x) {
// ... poate accesa 'priv'
// și funcția 'faCeva'
}
function faAia (param) {
// ... invizibilă din afară
}
function faCeva (x, y) {
// ...
}
return {
// sunt publice doar
// funcțiile 'start' și 'faCeva'
'start': start,
'faCeva': faCeva
}
}) ();
cod.start (arg); // apelăm 'start'
via closures, simulăm metodele private
modularizarea codului (module pattern)
Dr.SabinBuragawww.purl.org/net/busaco
var makeCounter = function () {
var contorPrivat = 0; // un contor de valori (inițial, zero)
function changeBy (val) { // funcție privată
contorPrivat += val; // ce modifică valoarea contorului
}
return { // funcții publice (expuse)
increment: function() {
changeBy (1);
},
decrement: function() {
changeBy (-1);
},
value: function() {
return contorPrivat;
}
};
};
console.log (contor1.value ()); /* 0 */
contor1.increment ();
contor1.increment ();
console.log (contor1.value ()); /* 2 */
contor1.decrement ();
console.log (contor1.value ()); /* 1 */
console.log (contor2.value ()); /* 0 */
Dr.SabinBuragawww.purl.org/net/busaco
Dr.SabinBuragawww.purl.org/net/busaco
Totul în JavaScript este obiect – chiar și funcțiile
de reținut!
Dr.SabinBuragawww.purl.org/net/busaco
Orice obiect este întotdeauna mutabil
(poate fi alterat oricând)
proprietățile și metodele sunt disponibile
oriunde în program (public scope)
de reținut!
Dr.SabinBuragawww.purl.org/net/busaco
Nu există vizibilitate la nivel de bloc de cod
(block scope),
ci doar la nivel global ori la nivel de funcție
de reținut!
Dr.SabinBuragawww.purl.org/net/busaco
Funcțiile ascund orice e definit în interiorul lor
de reținut!
Dr.SabinBuragawww.purl.org/net/busaco
Operatorul “.” este echivalent
cu de-referențierea:
ob.prop === ob["prop"]
de reținut!
Dr.SabinBuragawww.purl.org/net/busaco
Operatorul new creează obiecte aparținând
„clasei” specificate de funcția constructor
de reținut!
Dr.SabinBuragawww.purl.org/net/busaco
Accesorul this este relativ la contextul execuției,
nu al declarării
de reținut!
Dr.SabinBuragawww.purl.org/net/busaco
Accesorul this este relativ la contextul execuției,
nu al declarării
de reținut!
Atenție la dependența
de mediul de execuție!
Dr.SabinBuragawww.purl.org/net/busaco
Proprietatea prototype are valori modificabile
de reținut!
Dr.SabinBuragawww.purl.org/net/busaco
JavaScript Object Notation
http://json.org/
json
Dr.SabinBuragawww.purl.org/net/busaco
Format compact pentru interschimb de date
între aplicații
biblioteci de procesare și alte resurse de interes:
http://jsonauts.github.io/
json
Dr.SabinBuragawww.purl.org/net/busaco
Datele pot fi specificate
în termeni de obiecte și literali
json
Dr.SabinBuragawww.purl.org/net/busaco
JavaScript Object Notation
{
'nume': 'Tux',
'stoc': 33,
'model': [ 'candid', 'furios', 'vesel' ]
}
json
datele pot fi evaluate
direct în JavaScript
Dr.SabinBuragawww.purl.org/net/busaco
Procesare via obiectul predefinit JSON
JSON.parse()
JSON.stringify()
json
Dr.SabinBuragawww.purl.org/net/busaco
// definim un șir de caractere ce specifică diverse construcții JSON
// (e.g., preluarea datelor via Ajax/WebSocket-uri de la un serviciu Web/API)
var sirTux = '{ "nume": "Tux", "stoc": 33, "model": [ "candid", "viteaz" ] }';
var tux;
try { // procesăm șirul pentru a genera un obiect JS via obiectul JSON
tux = JSON.parse (sirTux);
} catch (e) { console.log (e.message); /* eroare :( */ }
// obiectul 'tux' generat cu JSON.parse
console.log (tux);
// serializare ca șir de caractere
console.log (JSON.stringify (tux));
Dr.SabinBuragawww.purl.org/net/busaco
suportul actual oferit de browser
pentru JSON
http://caniuse.com/#search=json
Dr.SabinBuragawww.purl.org/net/busaco
Ce trăsături specifice – mai rar ori deloc
întâlnite la alte limbaje de programare
cunoscute – prezintă ECMAScript?
discuție (pentru acasă)
Dr.SabinBuragawww.purl.org/net/busaco
Specificați în ECMAScript – la alegere –
structurile de date privitoare la:
arbore binar
(di)graf
matrice multidimensională
test scris #3 (T3)
Dr.SabinBuragawww.purl.org/net/busaco
episodul viitor: JavaScript în cadrul browser-ului

More Related Content

What's hot

CLIW 2017-2018 (5/12) Limbajul de programare JavaScript. Aspecte esenţiale
CLIW 2017-2018 (5/12) Limbajul de programare JavaScript. Aspecte esenţialeCLIW 2017-2018 (5/12) Limbajul de programare JavaScript. Aspecte esenţiale
CLIW 2017-2018 (5/12) Limbajul de programare JavaScript. Aspecte esenţialeSabin Buraga
 
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...Sabin Buraga
 
CLIW 2015-2016 (6/13) (Re)găsirea resurselor Web. De la motoare de căutare și...
CLIW 2015-2016 (6/13) (Re)găsirea resurselor Web. De la motoare de căutare și...CLIW 2015-2016 (6/13) (Re)găsirea resurselor Web. De la motoare de căutare și...
CLIW 2015-2016 (6/13) (Re)găsirea resurselor Web. De la motoare de căutare și...Sabin Buraga
 
CLIW 2017-2018 (6/12) Limbajul de programare JavaScript. Aspecte moderne: ES6...
CLIW 2017-2018 (6/12) Limbajul de programare JavaScript. Aspecte moderne: ES6...CLIW 2017-2018 (6/12) Limbajul de programare JavaScript. Aspecte moderne: ES6...
CLIW 2017-2018 (6/12) Limbajul de programare JavaScript. Aspecte moderne: ES6...Sabin Buraga
 
CLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de caz
CLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de cazCLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de caz
CLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de cazSabin Buraga
 
CLIW 2017-2018 (8/12) Ingineria dezvoltării aplicaţiilor JavaScript
CLIW 2017-2018 (8/12) Ingineria dezvoltării aplicaţiilor JavaScriptCLIW 2017-2018 (8/12) Ingineria dezvoltării aplicaţiilor JavaScript
CLIW 2017-2018 (8/12) Ingineria dezvoltării aplicaţiilor JavaScriptSabin Buraga
 
CLIW 2017-2018 (4/12) Vizualizarea datelor – o privire de ansamblu
CLIW 2017-2018 (4/12) Vizualizarea datelor – o privire de ansambluCLIW 2017-2018 (4/12) Vizualizarea datelor – o privire de ansamblu
CLIW 2017-2018 (4/12) Vizualizarea datelor – o privire de ansambluSabin Buraga
 
Limbajul JavaScript: o prezentare generală
Limbajul JavaScript: o prezentare generalăLimbajul JavaScript: o prezentare generală
Limbajul JavaScript: o prezentare generalăSabin Buraga
 
CLIW 2017-2018 (1/12) Interacţiune Web: de la concepte & utilizabilitate la d...
CLIW 2017-2018 (1/12) Interacţiune Web: de la concepte & utilizabilitate la d...CLIW 2017-2018 (1/12) Interacţiune Web: de la concepte & utilizabilitate la d...
CLIW 2017-2018 (1/12) Interacţiune Web: de la concepte & utilizabilitate la d...Sabin Buraga
 
Node.js: aspecte esențiale
Node.js: aspecte esențialeNode.js: aspecte esențiale
Node.js: aspecte esențialeSabin Buraga
 
Esență de JavaScript pentru novici
Esență de JavaScript pentru noviciEsență de JavaScript pentru novici
Esență de JavaScript pentru noviciSabin Buraga
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Sabin Buraga
 
HTML5 în XXX de minute
HTML5 în XXX de minuteHTML5 în XXX de minute
HTML5 în XXX de minuteSabin Buraga
 
CLIW 2015-2016 (2/13) Arhitectura navigatorului Web
CLIW 2015-2016 (2/13) Arhitectura navigatorului WebCLIW 2015-2016 (2/13) Arhitectura navigatorului Web
CLIW 2015-2016 (2/13) Arhitectura navigatorului WebSabin Buraga
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #8): Programare în li...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #8): Programare în li...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #8): Programare în li...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #8): Programare în li...Sabin Buraga
 
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Sabin Buraga
 
CLIW 2017-2018 (2/12) Arhitectura navigatorului Web
CLIW 2017-2018 (2/12) Arhitectura navigatorului WebCLIW 2017-2018 (2/12) Arhitectura navigatorului Web
CLIW 2017-2018 (2/12) Arhitectura navigatorului WebSabin Buraga
 
CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...
CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...
CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...Sabin Buraga
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....Sabin Buraga
 
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Sabin Buraga
 

What's hot (20)

CLIW 2017-2018 (5/12) Limbajul de programare JavaScript. Aspecte esenţiale
CLIW 2017-2018 (5/12) Limbajul de programare JavaScript. Aspecte esenţialeCLIW 2017-2018 (5/12) Limbajul de programare JavaScript. Aspecte esenţiale
CLIW 2017-2018 (5/12) Limbajul de programare JavaScript. Aspecte esenţiale
 
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
 
CLIW 2015-2016 (6/13) (Re)găsirea resurselor Web. De la motoare de căutare și...
CLIW 2015-2016 (6/13) (Re)găsirea resurselor Web. De la motoare de căutare și...CLIW 2015-2016 (6/13) (Re)găsirea resurselor Web. De la motoare de căutare și...
CLIW 2015-2016 (6/13) (Re)găsirea resurselor Web. De la motoare de căutare și...
 
CLIW 2017-2018 (6/12) Limbajul de programare JavaScript. Aspecte moderne: ES6...
CLIW 2017-2018 (6/12) Limbajul de programare JavaScript. Aspecte moderne: ES6...CLIW 2017-2018 (6/12) Limbajul de programare JavaScript. Aspecte moderne: ES6...
CLIW 2017-2018 (6/12) Limbajul de programare JavaScript. Aspecte moderne: ES6...
 
CLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de caz
CLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de cazCLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de caz
CLIW 2015-2016 (1/13) Interacțiune Web: concepte, context, studii de caz
 
CLIW 2017-2018 (8/12) Ingineria dezvoltării aplicaţiilor JavaScript
CLIW 2017-2018 (8/12) Ingineria dezvoltării aplicaţiilor JavaScriptCLIW 2017-2018 (8/12) Ingineria dezvoltării aplicaţiilor JavaScript
CLIW 2017-2018 (8/12) Ingineria dezvoltării aplicaţiilor JavaScript
 
CLIW 2017-2018 (4/12) Vizualizarea datelor – o privire de ansamblu
CLIW 2017-2018 (4/12) Vizualizarea datelor – o privire de ansambluCLIW 2017-2018 (4/12) Vizualizarea datelor – o privire de ansamblu
CLIW 2017-2018 (4/12) Vizualizarea datelor – o privire de ansamblu
 
Limbajul JavaScript: o prezentare generală
Limbajul JavaScript: o prezentare generalăLimbajul JavaScript: o prezentare generală
Limbajul JavaScript: o prezentare generală
 
CLIW 2017-2018 (1/12) Interacţiune Web: de la concepte & utilizabilitate la d...
CLIW 2017-2018 (1/12) Interacţiune Web: de la concepte & utilizabilitate la d...CLIW 2017-2018 (1/12) Interacţiune Web: de la concepte & utilizabilitate la d...
CLIW 2017-2018 (1/12) Interacţiune Web: de la concepte & utilizabilitate la d...
 
Node.js: aspecte esențiale
Node.js: aspecte esențialeNode.js: aspecte esențiale
Node.js: aspecte esențiale
 
Esență de JavaScript pentru novici
Esență de JavaScript pentru noviciEsență de JavaScript pentru novici
Esență de JavaScript pentru novici
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
 
HTML5 în XXX de minute
HTML5 în XXX de minuteHTML5 în XXX de minute
HTML5 în XXX de minute
 
CLIW 2015-2016 (2/13) Arhitectura navigatorului Web
CLIW 2015-2016 (2/13) Arhitectura navigatorului WebCLIW 2015-2016 (2/13) Arhitectura navigatorului Web
CLIW 2015-2016 (2/13) Arhitectura navigatorului Web
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #8): Programare în li...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #8): Programare în li...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #8): Programare în li...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #8): Programare în li...
 
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
 
CLIW 2017-2018 (2/12) Arhitectura navigatorului Web
CLIW 2017-2018 (2/12) Arhitectura navigatorului WebCLIW 2017-2018 (2/12) Arhitectura navigatorului Web
CLIW 2017-2018 (2/12) Arhitectura navigatorului Web
 
CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...
CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...
CLIW 2017-2018 (3/12) (Re)găsirea resurselor Web. De la motoare de căutare şi...
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
 
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
 

Viewers also liked

Нови приключения на преводачите
Нови приключения на преводачитеНови приключения на преводачите
Нови приключения на преводачитеAlexander Shopov
 
Medical 2015 Mid Year Report NEW 090115
Medical 2015 Mid Year Report NEW 090115Medical 2015 Mid Year Report NEW 090115
Medical 2015 Mid Year Report NEW 090115BRIAN FLEMING, MBA
 
BABOKv3 讀書會 20160317
BABOKv3 讀書會 20160317BABOKv3 讀書會 20160317
BABOKv3 讀書會 20160317moris lee
 
從敏捷思考讀書會創業與人生
從敏捷思考讀書會創業與人生從敏捷思考讀書會創業與人生
從敏捷思考讀書會創業與人生MaoYang Chien
 
Oltre parigi - AESS SaveAtWork
Oltre parigi - AESS SaveAtWorkOltre parigi - AESS SaveAtWork
Oltre parigi - AESS SaveAtWorkLuca Lombroso
 
Women and Social Media
Women and Social MediaWomen and Social Media
Women and Social MediabeBee
 
Понятийные системы в цифровом мире: что может знать компьютер?
Понятийные системы в цифровом мире: что может знать компьютер?Понятийные системы в цифровом мире: что может знать компьютер?
Понятийные системы в цифровом мире: что может знать компьютер?Dmitry Kudryavtsev
 
JCE editor optimaliseren (Joomla Den Bosc­h 2016)
JCE editor optimaliseren (Joomla Den Bosc­h 2016)JCE editor optimaliseren (Joomla Den Bosc­h 2016)
JCE editor optimaliseren (Joomla Den Bosc­h 2016)Peter Martin
 
GWT: Our Experiences
GWT: Our ExperiencesGWT: Our Experiences
GWT: Our ExperiencesYenwen Feng
 
افضل 5 كتب عن كيفية تحقيق الثراءpdf
افضل 5 كتب عن كيفية تحقيق الثراءpdfافضل 5 كتب عن كيفية تحقيق الثراءpdf
افضل 5 كتب عن كيفية تحقيق الثراءpdfosmanabdelrhman
 
Open Science and OER in Russia
Open Science and OER in RussiaOpen Science and OER in Russia
Open Science and OER in RussiaIrina Radchenko
 
Mythos 2016 sur Twitter
Mythos 2016 sur TwitterMythos 2016 sur Twitter
Mythos 2016 sur Twitterouestlab
 
20160218 sociale media in de kinderopvang
20160218 sociale media in de kinderopvang20160218 sociale media in de kinderopvang
20160218 sociale media in de kinderopvangI Like Media
 

Viewers also liked (20)

Limbajul c
Limbajul cLimbajul c
Limbajul c
 
C++
C++C++
C++
 
Tutorial C++
Tutorial C++Tutorial C++
Tutorial C++
 
DNA-APBio Ch 9
DNA-APBio Ch 9DNA-APBio Ch 9
DNA-APBio Ch 9
 
Нови приключения на преводачите
Нови приключения на преводачитеНови приключения на преводачите
Нови приключения на преводачите
 
Medical 2015 Mid Year Report NEW 090115
Medical 2015 Mid Year Report NEW 090115Medical 2015 Mid Year Report NEW 090115
Medical 2015 Mid Year Report NEW 090115
 
BABOKv3 讀書會 20160317
BABOKv3 讀書會 20160317BABOKv3 讀書會 20160317
BABOKv3 讀書會 20160317
 
從敏捷思考讀書會創業與人生
從敏捷思考讀書會創業與人生從敏捷思考讀書會創業與人生
從敏捷思考讀書會創業與人生
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Oltre parigi - AESS SaveAtWork
Oltre parigi - AESS SaveAtWorkOltre parigi - AESS SaveAtWork
Oltre parigi - AESS SaveAtWork
 
Women and Social Media
Women and Social MediaWomen and Social Media
Women and Social Media
 
Понятийные системы в цифровом мире: что может знать компьютер?
Понятийные системы в цифровом мире: что может знать компьютер?Понятийные системы в цифровом мире: что может знать компьютер?
Понятийные системы в цифровом мире: что может знать компьютер?
 
JCE editor optimaliseren (Joomla Den Bosc­h 2016)
JCE editor optimaliseren (Joomla Den Bosc­h 2016)JCE editor optimaliseren (Joomla Den Bosc­h 2016)
JCE editor optimaliseren (Joomla Den Bosc­h 2016)
 
GWT: Our Experiences
GWT: Our ExperiencesGWT: Our Experiences
GWT: Our Experiences
 
افضل 5 كتب عن كيفية تحقيق الثراءpdf
افضل 5 كتب عن كيفية تحقيق الثراءpdfافضل 5 كتب عن كيفية تحقيق الثراءpdf
افضل 5 كتب عن كيفية تحقيق الثراءpdf
 
Open Science and OER in Russia
Open Science and OER in RussiaOpen Science and OER in Russia
Open Science and OER in Russia
 
Mythos 2016 sur Twitter
Mythos 2016 sur TwitterMythos 2016 sur Twitter
Mythos 2016 sur Twitter
 
20160218 sociale media in de kinderopvang
20160218 sociale media in de kinderopvang20160218 sociale media in de kinderopvang
20160218 sociale media in de kinderopvang
 
Produtos Amway
Produtos AmwayProdutos Amway
Produtos Amway
 
الموقع الإلكترونى للغرفة التجارية للقاهرة
الموقع الإلكترونى للغرفة التجارية للقاهرةالموقع الإلكترونى للغرفة التجارية للقاهرة
الموقع الإلكترونى للغرفة التجارية للقاهرة
 

Similar to CLIW 2015-2016 (7/13) Limbajul de programare JavaScript

CLIW 2014—2015 (7/12): Programare în limbajul JavaScript
CLIW 2014—2015 (7/12): Programare în limbajul JavaScriptCLIW 2014—2015 (7/12): Programare în limbajul JavaScript
CLIW 2014—2015 (7/12): Programare în limbajul JavaScriptSabin Buraga
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSabin Buraga
 
Un mini-tutorial JavaScript
Un mini-tutorial JavaScriptUn mini-tutorial JavaScript
Un mini-tutorial JavaScriptSabin Buraga
 
Web 2016 (05/13) Programare Web – Dezvoltarea aplicațiilor Web via Node.js
Web 2016 (05/13) Programare Web – Dezvoltarea aplicațiilor Web via Node.jsWeb 2016 (05/13) Programare Web – Dezvoltarea aplicațiilor Web via Node.js
Web 2016 (05/13) Programare Web – Dezvoltarea aplicațiilor Web via Node.jsSabin Buraga
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...Sabin Buraga
 
CLIW 2014—2015 (9/12): Ingineria dezvoltării aplicaţiilor JavaScript
CLIW 2014—2015 (9/12): Ingineria dezvoltării aplicaţiilor JavaScriptCLIW 2014—2015 (9/12): Ingineria dezvoltării aplicaţiilor JavaScript
CLIW 2014—2015 (9/12): Ingineria dezvoltării aplicaţiilor JavaScriptSabin Buraga
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSabin Buraga
 
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...Sabin Buraga
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSabin Buraga
 
Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...
Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...
Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...Sabin Buraga
 
WADe 2017-2018 Tutorial (1/3): Web Application Development with Node.js – An ...
WADe 2017-2018 Tutorial (1/3): Web Application Development with Node.js – An ...WADe 2017-2018 Tutorial (1/3): Web Application Development with Node.js – An ...
WADe 2017-2018 Tutorial (1/3): Web Application Development with Node.js – An ...Sabin Buraga
 
Sabin Buraga — JavaScript
Sabin Buraga — JavaScriptSabin Buraga — JavaScript
Sabin Buraga — JavaScriptSabin Buraga
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.Sabin Buraga
 
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5Sabin Buraga
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...Sabin Buraga
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSabin Buraga
 
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...Sabin Buraga
 
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebSabin Buraga
 
CLIW 2017-2018 (11/12) Programare Web. API-uri JavaScript în contextul HTML5 ...
CLIW 2017-2018 (11/12) Programare Web. API-uri JavaScript în contextul HTML5 ...CLIW 2017-2018 (11/12) Programare Web. API-uri JavaScript în contextul HTML5 ...
CLIW 2017-2018 (11/12) Programare Web. API-uri JavaScript în contextul HTML5 ...Sabin Buraga
 
WADe 2017-2018 (5/12) Data Modeling in RDF (Resource Description Framework)
WADe 2017-2018 (5/12) Data Modeling in RDF (Resource Description Framework)WADe 2017-2018 (5/12) Data Modeling in RDF (Resource Description Framework)
WADe 2017-2018 (5/12) Data Modeling in RDF (Resource Description Framework)Sabin Buraga
 

Similar to CLIW 2015-2016 (7/13) Limbajul de programare JavaScript (20)

CLIW 2014—2015 (7/12): Programare în limbajul JavaScript
CLIW 2014—2015 (7/12): Programare în limbajul JavaScriptCLIW 2014—2015 (7/12): Programare în limbajul JavaScript
CLIW 2014—2015 (7/12): Programare în limbajul JavaScript
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
 
Un mini-tutorial JavaScript
Un mini-tutorial JavaScriptUn mini-tutorial JavaScript
Un mini-tutorial JavaScript
 
Web 2016 (05/13) Programare Web – Dezvoltarea aplicațiilor Web via Node.js
Web 2016 (05/13) Programare Web – Dezvoltarea aplicațiilor Web via Node.jsWeb 2016 (05/13) Programare Web – Dezvoltarea aplicațiilor Web via Node.js
Web 2016 (05/13) Programare Web – Dezvoltarea aplicațiilor Web via Node.js
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #10): Ingineria dezvo...
 
CLIW 2014—2015 (9/12): Ingineria dezvoltării aplicaţiilor JavaScript
CLIW 2014—2015 (9/12): Ingineria dezvoltării aplicaţiilor JavaScriptCLIW 2014—2015 (9/12): Ingineria dezvoltării aplicaţiilor JavaScript
CLIW 2014—2015 (9/12): Ingineria dezvoltării aplicaţiilor JavaScript
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
 
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.js
 
Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...
Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...
Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...
 
WADe 2017-2018 Tutorial (1/3): Web Application Development with Node.js – An ...
WADe 2017-2018 Tutorial (1/3): Web Application Development with Node.js – An ...WADe 2017-2018 Tutorial (1/3): Web Application Development with Node.js – An ...
WADe 2017-2018 Tutorial (1/3): Web Application Development with Node.js – An ...
 
Sabin Buraga — JavaScript
Sabin Buraga — JavaScriptSabin Buraga — JavaScript
Sabin Buraga — JavaScript
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
 
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #6): Căutarea resurse...
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
 
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...
 
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
 
CLIW 2017-2018 (11/12) Programare Web. API-uri JavaScript în contextul HTML5 ...
CLIW 2017-2018 (11/12) Programare Web. API-uri JavaScript în contextul HTML5 ...CLIW 2017-2018 (11/12) Programare Web. API-uri JavaScript în contextul HTML5 ...
CLIW 2017-2018 (11/12) Programare Web. API-uri JavaScript în contextul HTML5 ...
 
WADe 2017-2018 (5/12) Data Modeling in RDF (Resource Description Framework)
WADe 2017-2018 (5/12) Data Modeling in RDF (Resource Description Framework)WADe 2017-2018 (5/12) Data Modeling in RDF (Resource Description Framework)
WADe 2017-2018 (5/12) Data Modeling in RDF (Resource Description Framework)
 

More from Sabin Buraga

Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleWeb 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleSabin Buraga
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebSabin Buraga
 
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelWeb 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelSabin Buraga
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Sabin Buraga
 
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTSabin Buraga
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Sabin Buraga
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Sabin Buraga
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeSabin Buraga
 
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSabin Buraga
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSabin Buraga
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5Sabin Buraga
 
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)Sabin Buraga
 
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)Sabin Buraga
 
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de clientSTAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de clientSabin Buraga
 
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...Sabin Buraga
 
Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)Sabin Buraga
 
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...Sabin Buraga
 
HCI 2018 (3/10) Design Models, Methodologies and Guidelines
HCI 2018 (3/10) Design Models, Methodologies and GuidelinesHCI 2018 (3/10) Design Models, Methodologies and Guidelines
HCI 2018 (3/10) Design Models, Methodologies and GuidelinesSabin Buraga
 
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual DesignHCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual DesignSabin Buraga
 
HCI 2018 (5/10) Information Architecture. From Design Patterns to Flow
HCI 2018 (5/10) Information Architecture. From Design Patterns to FlowHCI 2018 (5/10) Information Architecture. From Design Patterns to Flow
HCI 2018 (5/10) Information Architecture. From Design Patterns to FlowSabin Buraga
 

More from Sabin Buraga (20)

Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleWeb 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturale
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
 
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelWeb 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
 
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma REST
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
 
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor Web
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului Web
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5
 
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
 
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
 
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de clientSTAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
 
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
 
Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)
 
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
 
HCI 2018 (3/10) Design Models, Methodologies and Guidelines
HCI 2018 (3/10) Design Models, Methodologies and GuidelinesHCI 2018 (3/10) Design Models, Methodologies and Guidelines
HCI 2018 (3/10) Design Models, Methodologies and Guidelines
 
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual DesignHCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
HCI 2018 (4/10) Information Architecture. From Design Patterns to Visual Design
 
HCI 2018 (5/10) Information Architecture. From Design Patterns to Flow
HCI 2018 (5/10) Information Architecture. From Design Patterns to FlowHCI 2018 (5/10) Information Architecture. From Design Patterns to Flow
HCI 2018 (5/10) Information Architecture. From Design Patterns to Flow
 

CLIW 2015-2016 (7/13) Limbajul de programare JavaScript