Documente Academic
Documente Profesional
Documente Cultură
la nivel de client
Sabin Buragaprofs.info.uaic.ro/~busaco
www.flickr.com/photos/nathansmith/4704268314/
Dr.
programare Web
limbajul JavaScript – o prezentare generală
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco
“There are only two kinds of languages: the ones
people complain about and the ones nobody uses.”
Bjarne Stroustrup
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco
Inventat de Brendan Eich (1995)
www.w3.org/community/webed/wiki/A_Short_History_of_JavaScript
Adaptat de Microsoft: JScript (1996)
ECMAScript
ECMA-262
www.ecma-international.org/publications/standards/Ecma-262.htm
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco
ECMAScript
imperativă
à la C
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco
Adoptă diverse paradigme de programare
funcțională
pseudo-obiectuală
via prototipuri
(obiectele moștenesc alte obiecte, nu clase)
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco
Adoptă diverse paradigme de programare
dinamică
navigator Web
navigator Web
navigator Web
navigator Web
developer.mozilla.org/Web/JavaScript/Reference/Global_Objects/Number
caracteristici: tipuri de date
developer.mozilla.org/Web/JavaScript/Reference/Global_Objects/String
caracteristici: tipuri de date
developer.mozilla.org/Web/JavaScript/Reference/Global_Objects/Boolean
caracteristici: tipuri de date
indică baza
de numerație
caracteristici: tipuri de date
Infinity
–Infinity
caracteristici: tipuri de date
constante predefinite:
Math.PI
Math.E
Math.LN10
etc.
caracteristici: tipuri de date
metode:
abs(x) ceil(x) cos(x) exp(x) floor(x) log(x) max(x, …) min(x, …)
pow(x, y) random() round(x) sign(x) sin(x) sqrt(x) trunc(x)
etc.
developer.mozilla.org/Web/JavaScript/Reference/Global_Objects/Math
caracteristici: tipuri de date
"Salut".length 5
caracteristici: tipuri de date
!!234 true
caracteristici: variabile
var mărime;
var numeAnimal = "Tux";
pentru numere: + – * / %
testare: == === != !== ?:
asignare: += –= *= /= %=
incrementare și decrementare: ++ – –
logici: ! && ||
concatenare de șiruri: "Java" + "Script" "JavaScript"
caracteristici: operatori
"3" + 4 + 5 "345"
3 + 4 + "5" "75"
1 == true true
caracteristici: operatori
1 == true true
a se folosi: 1 === true false
inhibă conversia
tipurilor de date
caracteristici: operatori
do {
var nume = preiaNume ();
} while (nume != "");
for (var contor = 0; contor < 33; contor++) {
// de 33 de ori…
}
caracteristici: control
Global Object
Function Array
String RegExp
Boolean Number
Math Date
de studiat developer.mozilla.org/JavaScript/Reference/Global_Objects
caracteristici: obiecte
Error
EvalError
RangeError
ReferenceError
SyntaxError
TypeError
URIError
caracteristici: obiecte
ob.nume = "Tux";
var nume = ob.nume;
caracteristici: obiecte
ob.nume = "Tux";
var nume = ob.nume;
echivalent cu:
ob["nume"] = "Tux";
var nume = ob["nume"];
caracteristici: obiecte
var pinguin = {
nume: "Tux",
proprietati: {
culoare: "verde",
marime: 17
}
}
caracteristici: obiecte
var pinguin = {
nume: "Tux",
proprietati: {
culoare: "verde",
marime: 17
}
accesare:
}
pinguin.proprietati.marime 17
pinguin["proprietati"]["culoare"] "verde"
var facultyContactInfo = {
// numele proprietăților sunt încadrate de ghilimele
"official-phone" : '+40232201090',
developer.mozilla.org/Web/JavaScript/Reference/Global_Objects/Array
caracteristici: tablouri
animale.length 3
caracteristici: tablouri
animale.length 3
developer.mozilla.org/Web/JavaScript/Reference/Global_Objects/Function
caracteristici: funcții
expresii
lambda
caracteristici: funcții
expresii
lambda
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: proprietăți
internal property
folosită exclusiv de procesorul ECMAScript
caracteristici: proprietăți
developer.mozilla.org/Web/JavaScript/Reference/Global_Objects/Object/prototype
caracteristici: prototipuri
developer.mozilla.org/docs/Glossary/Hoisting
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco
caracteristici: prototipuri
Animal.prototype.oferaNumeMare = function () {
return this.nume.toUpperCase ();
};
tux.oferaNumeMare () "TUX"
caracteristici: extinderea claselor
Animal.prototype.toString = function () {
return '<animal>' + this.oferaNume () + '</animal>';
};
tux.toString () "<animal>Tux</animal>"
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco
caracteristici: extinderea claselor
ClasaDeBază = function () { /* … */ };
SubClasa = function () { /* … */ };
SubClasa.prototype = new ClasaDeBază ();
caracteristici: funcții de nivel înalt
varianta clasică:
închideri
developer.mozilla.org/JavaScript/Guide/Closures
caracteristici: closures
slides.com/gsklee/functional-programming-in-5-minutes
caracteristici: currying
function f(x, y) {
return x + y;
}
function g(x) {
return function (y) { „lanț” de funcții, fiecare
return x + y; având un singur argument
}
}
f(33, 74) g(33)(74);
Atenție la dependența
de mediul de execuție!
de reținut!
json.org
{
'nume': 'Tux', datele pot fi evaluate
direct în JavaScript
'stoc': 33,
'model': [ 'candid', 'viteaz' ]
}
json
JSON.parse()
JSON.stringify()
// 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;
escaped special
characters
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco
suportul actual oferit de browser
pentru JSON
caniuse.com/#search=json
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco
episodul viitor:
programare în JavaScript (continuare)