+ All Categories
Home > Documents > Java Script Slide

Java Script Slide

Date post: 07-Apr-2018
Category:
Upload: silviu-cornestean
View: 226 times
Download: 0 times
Share this document with a friend

of 95

Transcript
  • 8/6/2019 Java Script Slide

    1/95

    JavaScript

    Dr. Sabin Buraga

    www.purl.org/net/busaco

    @busaco

  • 8/6/2019 Java Script Slide

    2/95

    Cu cat cunosti mai bine,cu atat iubesti mai mult.

    Leonardo da Vinci

  • 8/6/2019 Java Script Slide

    3/95

    inventat de Brendan Eich (1995)

  • 8/6/2019 Java Script Slide

    4/95

    denumit initial LiveScript

  • 8/6/2019 Java Script Slide

    5/95

    implementat in Netscape Navigator

  • 8/6/2019 Java Script Slide

    6/95

    adaptat de Microsoft: JScript (1996)

  • 8/6/2019 Java Script Slide

    7/95

    standardizat in 1997 de ECMAEuropean Computer Manufacturers Association

    www.ecma-international.org

  • 8/6/2019 Java Script Slide

    8/95

    limbaj de tip script(interpretat)

  • 8/6/2019 Java Script Slide

    9/95

    limbaj de tip script(interpretat)

    destinat sa manipuleze, sa automatizezesi sa integreze facilitatile oferite

    de un anumit sistem

  • 8/6/2019 Java Script Slide

    10/95

    limbaj de tip script(interpretat)

    nu necesita intrari/iesiri in mod implicit

  • 8/6/2019 Java Script Slide

    11/95

    Cum putem executa programele

    JavaScript?

  • 8/6/2019 Java Script Slide

    12/95

    mediu de executie(host-environment):

    navigator Web

    injectarea de cod JavaScriptin documentele (X)HTML via

  • 8/6/2019 Java Script Slide

    13/95

    mediu de executie(host-environment):

    platforma de dezvoltarea aplicatiilor

    e.g., Adobe Flex/AIR

  • 8/6/2019 Java Script Slide

    14/95

    mediu de executie(host-environment):

    aplicatie de sine-statatoare

    Adobe Creative Suite, UltraEdit etc.

  • 8/6/2019 Java Script Slide

    15/95

    mediu de executie(host-environment):

    procesor (engine) independent

    e.g., Yahoo! Widget Engine

  • 8/6/2019 Java Script Slide

    16/95

    mediu de executie(host-environment):

    componenteale sistemului de operare

    Dashboard Mac OS XSidebar Windows Vista/7

  • 8/6/2019 Java Script Slide

    17/95

    cuvinte rezervate:break else new var case finally return

    void catch for switch while continuefunction this with default if throw

    delete in try do instanceof typeof

  • 8/6/2019 Java Script Slide

    18/95

    alte cuvinte rezervate:abstract enum int short boolean export

    interface static byte extends long superchar final native synchronized class float

    package throws const goto private transient

    debugger implements protected volatile

    double import public

  • 8/6/2019 Java Script Slide

    19/95

    tipuri de date:

    Numberdubla precizie, stocare pe 64 biti

    Stringsecvente de caractere Unicode, 16 biti

    Booleansecvente ce se pot evalua ca true/false

    ObjectFunction, Array, Date, RegExp

    Nullsemnifica nici o valoare

    Undefined

    nici o valoare asignata inca

  • 8/6/2019 Java Script Slide

    20/95

    valoarea NaN not a number

    parseInt ("Salut")NaN

    isNaN (NaN + 33)true

  • 8/6/2019 Java Script Slide

    21/95

  • 8/6/2019 Java Script Slide

    22/95

    un caracter reprezintaun sir de lungime 1

    sirurile sunt obiecte

    "Salut".length5

  • 8/6/2019 Java Script Slide

    23/95

    valorile 0, "", NaN, null, undefinedsunt interpretate ca fiind false

  • 8/6/2019 Java Script Slide

    24/95

    variabile sunt declarate cu var

    var marime;var numeAnimal = "Tux";

  • 8/6/2019 Java Script Slide

    25/95

    variabilele declarate fara valori asignate,se considera undefined

  • 8/6/2019 Java Script Slide

    26/95

    daca nu se foloseste var,atunci variabila este considerata globala

    de evitat asa ceva!

  • 8/6/2019 Java Script Slide

    27/95

    conversia tipurilor se face din zbor

    "3" + 4 + 53453 + 4 + "5"75

  • 8/6/2019 Java Script Slide

    28/95

    pentru a afla tipul unei expresii,se foloseste typeof

    typeof "Tux"string

  • 8/6/2019 Java Script Slide

    29/95

    instructiuni de control

    testare: if ... else, switch

  • 8/6/2019 Java Script Slide

    30/95

    instructiuni de control

    ciclare: while, do ... while, for

  • 8/6/2019 Java Script Slide

    31/95

    instructiuni de control

    exceptii: try ... catch ... finally

    emiterea unei exceptii: throw

  • 8/6/2019 Java Script Slide

    32/95

    obiecte

    perechi nume

    valoare

    tabele de dispersie (hash) in C/C++

    tablouri asociative in Perl, PHP, RubyHashMapsin Java

  • 8/6/2019 Java Script Slide

    33/95

    obiecte

    perechi nume

    valoare

    numele este desemnat

    de un sir de caractere

    valoarea poate fi de orice tip

  • 8/6/2019 Java Script Slide

    34/95

    obiecte

    colectii de proprietati,avand mai multe atribute

    proprietatile pot contine alte obiecte,valori primitive sau metode

  • 8/6/2019 Java Script Slide

    35/95

    obiecte

    in JavaScript, se predefinesc obiectele

    Global

    ObjectFunction

    Array

    String

    BooleanNumber

    Math

    Date

  • 8/6/2019 Java Script Slide

    36/95

    obiecte

    create prin intermediul lui new

    var obiect = new Object();

    var obiect = {};

    // echivalent cu linia anterioara

  • 8/6/2019 Java Script Slide

    37/95

    obiecte

    accesarea proprietatilor

    obiect.nume = "Tux";var nume = obiect.nume;

  • 8/6/2019 Java Script Slide

    38/95

    obiecte

    accesarea proprietatilor

    obiect.nume = "Tux";var nume = obiect.nume;

    echivalent:

    obiect["nume"] = "Tux";var nume = obiect["nume"];

  • 8/6/2019 Java Script Slide

    39/95

    obiecte

    declarare + asociere de valori

    var pingu = {

    nume: "Tux",proprietati: {

    culoare: "oranj",

    marime: 17

    }}

  • 8/6/2019 Java Script Slide

    40/95

    tablouri

    sunt tipuri speciale de obiecte

    proprietatile sunt numere,nu siruri de caractere

  • 8/6/2019 Java Script Slide

    41/95

    tablouri

    var zoo = new Array ();zoo[0] = "pinguin";

    zoo[1] = "omida";

    zoo[2] = "urs";

    zoo.length3

  • 8/6/2019 Java Script Slide

    42/95

  • 8/6/2019 Java Script Slide

    43/95

    tablouri

    iterari:

    for (var iter = 0;

    iter < zoo.length; iter++) {

    // de prelucrat zoo[iter]

    }

    for (var iter = 0, lung = zoo.length;iter < lung; iter++) {

    // varianta mai buna

    // de prelucrat zoo[iter]

    }

    de ce?

  • 8/6/2019 Java Script Slide

    44/95

    tablouri

    elementele pot apartineunor tipuri de date eterogene

    var zoo = [16, "musca", true, "gaga"];

  • 8/6/2019 Java Script Slide

    45/95

    functii

    obiecte definite prin function

    function transformaPixeliInPuncte (px) {

    var puncte = px * 300;

    return puncte;

    }

  • 8/6/2019 Java Script Slide

    46/95

    functii

    argumentele primite de o functiese acceseaza via tabloul arguments

  • 8/6/2019 Java Script Slide

    47/95

    functii

    pot fi specificate functii anonime

    expresiilambda

  • 8/6/2019 Java Script Slide

    48/95

    functii

    pot fi specificate functii anonime

    expresiilambda

    in acest sens, JavaScript este un limbaj functional

  • 8/6/2019 Java Script Slide

    49/95

    var media = function () { // calculul mediei

    var suma = 0;

    for (var iter = 0,

    lung = arguments.length;

    iter < lung; iter++) {

    suma += arguments[iter];}

    return suma / arguments.length;

    }

  • 8/6/2019 Java Script Slide

    50/95

    putem incapsula functiile in clase?

  • 8/6/2019 Java Script Slide

    51/95

    de la functii la clase:

    function Animal (nume, marime) {

    this.nume = nume; // date-membre

    this.marime = marime;

    this.oferaNume = function () { // metoda

    return this.nume;

    };this.oferaMarime = function () { // metoda

    return this.marime;

    };

    }

  • 8/6/2019 Java Script Slide

    52/95

    instantierea unui obiect:

    var tux = new Animal ("Tux", 17);

  • 8/6/2019 Java Script Slide

    53/95

    operatorul new creaza un nou obiect vidsi apeleaza functia specificatacu this setat pe acest obiect

  • 8/6/2019 Java Script Slide

    54/95

    aceste functii se numesc constructori,trebuie apelate via new si, prin conventie,

    au numele scris cu litera mare

  • 8/6/2019 Java Script Slide

    55/95

    structura unei clase poate fi extinsa ulterior,folosind proprietatea prototype

  • 8/6/2019 Java Script Slide

    56/95

    function Animal (nume, marime) {

    // definitie initiala

    this.nume = nume;

    this.marime = marime;

    }

    Animal.prototype.oferaNume = function () {

    return this.nume;}

    Animal.prototype.oferaMarime = function () {

    return this.marime;

    }

  • 8/6/2019 Java Script Slide

    57/95

    pentru a cunoaste tipul unui obiect pe baza constructorului sia ierarhiei de prototipuri

    se foloseste operatorul instanceof

  • 8/6/2019 Java Script Slide

    58/95

    var marimi = [17, 20, 7, 14];

    marimi instanceof Arraytrue

    marimi instanceof Objecttrue

    marimi instanceof Stringfalse

  • 8/6/2019 Java Script Slide

    59/95

    extinderea claselor

    adaugarea unei metode se realizeaza via prototype

  • 8/6/2019 Java Script Slide

    60/95

    Animal.prototype.oferaNumeMare =function () {

    return this.nume.toUpperCase ();

    }

    tux.oferaNumeMare ()"TUX"

  • 8/6/2019 Java Script Slide

    61/95

    in JavaScript, totul e consideratca fiind obiect chiar si functiile

  • 8/6/2019 Java Script Slide

    62/95

  • 8/6/2019 Java Script Slide

    63/95

    operatorul . este echivalentcu de-referentierea:

    obiect.prop === obiect["prop"]

  • 8/6/2019 Java Script Slide

    64/95

    functiile ascund orice este definitin interiorul lor

  • 8/6/2019 Java Script Slide

    65/95

    accesorul this este relativla contextul executiei,

    nu al declararii

  • 8/6/2019 Java Script Slide

    66/95

    rularea in browser

    programele JavaScript au acces la diverse obiecteoferite de navigatorul Web

  • 8/6/2019 Java Script Slide

    67/95

    rularea in browser

    de pilda, poate fi accesat obiectul global window

    var nav = window.navigator.userAgent;

    // date privitoare la browser

  • 8/6/2019 Java Script Slide

    68/95

    graceful degradation &

    progresive enhancement

    conceperea stratificata a aplicatiilor JavaScript

  • 8/6/2019 Java Script Slide

    69/95

    graceful degradation &

    progresive enhancement

    initial: interactiune minimala, fara JavaScript

    adaugarea progresiva a facilitatilor,in functie de context

  • 8/6/2019 Java Script Slide

    70/95

  • 8/6/2019 Java Script Slide

    71/95

    JSON JavaScript Object Notation

    format compact pentru interschimb de date

    intre aplicatii

  • 8/6/2019 Java Script Slide

    72/95

    JSON JavaScript Object Notation

    folosit la serializarea datelor in contextul Web

    uzual, transfer (a)sincron de dateintre servicii Web si aplicatii (clienti)

  • 8/6/2019 Java Script Slide

    73/95

    JSON JavaScript Object Notation

    defineste datele in termeni de obiecte & literali

    json.org

  • 8/6/2019 Java Script Slide

    74/95

    {

    'nume' : 'Tux',

    'stoc' : 33,

    'gen' : ['candid', 'furios', 'vesel']}

    datele pot fievaluate directin JavaScript

  • 8/6/2019 Java Script Slide

    75/95

    instrumente

    medii de dezvoltare

    Aptana Studio

    depanareFirebug (Lite)

    Visual Studio Developer 2010

    instrumente

  • 8/6/2019 Java Script Slide

    76/95

    instrumente

    testare (inginerie software)

    JSLint, JsUnit,jsTrace, Selenium

    instrumente

  • 8/6/2019 Java Script Slide

    77/95

    instrumente

    alte extensii/utilitare folositoare

    GreaseMonkey, Ubiquity, Y! SlowSpiderMonkey

    RhinoJavaScript Shell

    biblioteci

  • 8/6/2019 Java Script Slide

    78/95

    biblioteci

    Dojo: dojotoolkit.org

    jQuery:jquery.comPrototype: prototypejs.org

    Rico: openrico.orgScript.aculo.us: script.aculo.usYUI: developer.yahoo.net/yui/

    si multe altele

    jQ

  • 8/6/2019 Java Script Slide

    79/95

    jQuery

    scop principal:manipularea documentului HTML

    pe baza selectorilor CSS nivelul 3

    ofera un API concis, usor de folosit,disponibil open source

    http://jquery.com/http://visualjquery.com/

    jQ

  • 8/6/2019 Java Script Slide

    80/95

    jQuery

    focalizarea asupra interactiuniidintre codul JavaScript si

    constructiile (X)HTML

    jQ

  • 8/6/2019 Java Script Slide

    81/95

    jQuery

    aproape orice operatie urmeaza regula:

    gaseste ceva+

    executa ceva cu ceea ce-ai gasit

    jQ

  • 8/6/2019 Java Script Slide

    82/95

    jQuery

    accesul la nodurile documentului HTMLse realizeaza via functia jQuery()

    notatie prescurtata: $()

  • 8/6/2019 Java Script Slide

    83/95

    jQ

  • 8/6/2019 Java Script Slide

    84/95

    jQuery

    selectarea nodurilor dorite recurge laconventiile privitoare la selectorii CSS

    http://docs.jquery.com/Selectors

    jQ

  • 8/6/2019 Java Script Slide

    85/95

    jQuery

    selectori magici:

    privitori la pozitie :first :lastvizibilitate :hidden :visible

    referitori la animatie :animated

    vizand formularele Web :input :text:password :radio :submit

    desemnand cu anumit continut:contains (...)

    jQuery

  • 8/6/2019 Java Script Slide

    86/95

    jQuery

    selectarea nodurilor dorite recurge laconventiile privitoare la selectorii CSS

    $('div.info')

    toate elementele $('div#adresa')

    elementul $('div h1')

    in contextul: care include $('div#menu > p')

    in contextul:

    cu descendentii

  • 8/6/2019 Java Script Slide

    87/95

    unele rezultate ale $() pot intoarce

    colectii de noduri, prelucrate prin:

    $('div.info').size ()

    marimea colectiei obtinute

    $('div.info').each (function(div) { ... })

    iterator

    $('div.info').html ('Salut')inserare de cod HTML

  • 8/6/2019 Java Script Slide

    88/95

    unele rezultate ale $() pot intoarce

    colectii de noduri, prelucrate prin:

    $('img.foto').attr ('src', '/anonim.png')

    alterarea unui atribut

    $('a.menu').addClass ('vizitat')

    adaugarea unei clase CSS

    $('p:odd').css ('color: blue')modificare de proprietati CSS

  • 8/6/2019 Java Script Slide

    89/95

    suportul pentru transferuri asincrone Ajax:

    $('div#stiri').load ('stiri.html');

    incarcare asincrona

    $.get (url, parametri, functie-callback);incarcare prin GET

    $.post (url, parametri, functie-callback);

    incarcare via POST

    $.getJSON (url, parametri, functie-callback);

    preluare raspuns in format JSON

    jQuery

  • 8/6/2019 Java Script Slide

    90/95

    jQuery

    extinderi via plug-in-uri:

    manipularea formularelor

    jquery.com/plugins/project/form

    jQuery

  • 8/6/2019 Java Script Slide

    91/95

    jQuery

    extinderi via plug-in-uri:

    efecte de interfata +

    facilitarea interactiunii cu utilizatorul(e.g., slider, tabs, resize, drag & drop)

    http://ui.jquery.com/

    jQuery

  • 8/6/2019 Java Script Slide

    92/95

    jQuery

    extinderi via plug-in-uri:

    pentru alte detalii, a se consulta

    http://plugins.jquery.com

  • 8/6/2019 Java Script Slide

    93/95

    JavaScript

    resurse

  • 8/6/2019 Java Script Slide

    94/95

    B. Bibeault, Y. Katz,jQuery in Action,

    Manning, 2008

    S. Buraga (coord.), Programareain Web 2.0, Polirom, 2007

    R. Harmes, D. Diaz,Pro JavaScript Design Patterns,

    Apress, 2008

    M. Haverbeke, Eloquent JavaScript, 2007:

    http://eloquentjavascript.net/

    S. Willinson,A (Re)-Introduction to JavaScript,

    ETech Conference, 2005

    resurse

  • 8/6/2019 Java Script Slide

    95/95

    Mozilla Developer Center

    developer.mozilla.org

    Ajaxianwww.ajaxian.com

    Ajax Patternswww.ajaxpatterns.org

    jQueryhttp://docs.jquery.com

    www learningjquery com


Recommended