JavaScript - Zaawansowane programowanie

From Training Material
Jump to navigation Jump to search

THIS IS A DRAFT

This text may not be complete.

Template:JavaScript Links <slideshow style="nobleprog" headingmark="⌘" incmark="…" scaled="true" font="Trebuchet MS" >

title
JavaScript

</slideshow>

JavaScript - Zaawansowane programowanie ⌘

Co to jest ECMAScript ⌘

Czym charakteryzuje się ECMAScript jako język programowania?

JavaScript - Zaawansowane programowanie ⌘

Jakim językiem jest ECMAScript? ⌘

  • Co to jest ECMAScript?

Jakim językiem jest ECMAScript? ⌘

  • Co to jest DOM?

Jakim językiem jest ECMAScript? ⌘

  • Co to jest BOM?

Jakim językiem jest ECMAScript? ⌘

  • JavaScript = ECMAScript + BOM + DOM

Jakim językiem jest ECMAScript? ⌘

  • Proceduralnym?

Jakim językiem jest ECMAScript? ⌘

  • Proceduralnym?

Jakim językiem jest ECMAScript? ⌘

  • Proceduralnym?
  • Funkcyjnym?

Jakim językiem jest ECMAScript? ⌘

  • Proceduralnym?
  • Funkcyjnym?
  • Obiektowym?

Programowanie funkcyjne w ECMAScript ⌘

  • Funkcje anonimowe

Programowanie funkcyjne w ECMAScript ⌘

  • Funkcje anonimowe
  • Domknięcia

Programowanie funkcyjne w ECMAScript ⌘

  • Funkcje anonimowe
  • Domknięcia
  • Aplikowanie funkcji

Programowanie funkcyjne w ECMAScript ⌘

  • Funkcje anonimowe
  • Domknięcia
  • Aplikowanie funkcji
  • Currying

Programowanie funkcyjne w ECMAScript ⌘

  • Funkcje anonimowe
  • Domknięcia
  • Aplikowanie funkcji
  • Currying
  • Funkcje zwaracajace funkcje

Programowanie funkcyjne w ECMAScript ⌘

  • Funkcje anonimowe
  • Domknięcia
  • Aplikowanie funkcji
  • Currying
  • Funkcje zwaracajace funkcje
  • Rekurencja

Programowanie funkcyjne w ECMAScript ⌘

  • Funkcje anonimowe
  • Domknięcia
  • Aplikowanie funkcji
  • Currying
  • Funkcje zwaracajace funkcje
  • Rekurencja
  • Funkcje wyższego rzędu

Programowanie funkcyjne w ECMAScript ⌘

  • Funkcje anonimowe
  • Domknięcia
  • Aplikowanie funkcji
  • Currying
  • Funkcje zwaracajace funkcje
  • Rekurencja
  • Funkcje wyższego rzędu
  • Efekty uboczne funkcji

Programowanie objektowe w ECMAScript ⌘

  • W ECMAScript można powoływać instancje ale...

Programowanie objektowe w ECMAScript ⌘

  • W ECMAScript można powoływać instancje ale...
  • w ECMAScript nie ma klas!

Programowanie objektowe w ECMAScript ⌘

  • Klasy znane z innych językow programowania można jednak imitować

Programowanie objektowe w ECMAScript ⌘

  • Klasy znane z innych językow programowania można jednak imitować
  • za pomoc funkcji!

Programowanie objektowe w ECMAScript ⌘

  • W ECMAScript obiekt może być równocześnie definicj klasy

Programowanie objektowe w ECMAScript ⌘

  • W ECMAScript obiekt może być równocześnie definicj klasy
  • ale to zachowanie nie jest dostępne tylko w języku ECMAScript. Tak możliwość daje również np. język Scala.

Programowanie objektowe w ECMAScript ⌘

Co świadczy o tym, że dany język można uznać za obiektowy - 4 filary (paradygmaty) programowania obiektowego

Programowanie objektowe w ECMAScript ⌘

  • Abstrakcja

Programowanie objektowe w ECMAScript ⌘

  • Abstrakcja
  • Dziedziczenie

Programowanie objektowe w ECMAScript ⌘

  • Abstrakcja
  • Dziedziczenie
  • Hermetyzacja/Enkapsulacja

Programowanie objektowe w ECMAScript ⌘

  • Abstrakcja
  • Dziedziczenie
  • Hermetyzacja/Enkapsulacja
  • Polimorfizm

JavaScript alternatywy? ⌘

Możliwości JavaScript ⌘

  • JavaScript a inne języki
  • Łatwość programowania
  • Programowanie obiektowe
  • JavaScript i QA

Zaufanie dla technologii clientside ⌘

Podstawy języka ⌘

Pierwszy skrypt ⌘

Gdzie JavaScript jest osadzany? ⌘

Deklaracja i zasięg zmiennych ⌘

Dynamiczne typowanie ⌘

Struktury kontrolne ⌘

Funkcje i parametry ⌘

Funkcje anonimowe ⌘

Domknięcia ⌘

JavaScript - OOP ⌘

  • Co jest obiektem?
  • Objekt Global i Object
  • Najważniejsze obiekty
  • Wsparcie dla paradygmatów OOP

JavaScript - OOP ⌘

Konstruktory ⌘

Wzorzec prototypu ⌘
 function Father() {
 }

 Father.prototype.age = 48;
 Father.ptototype.children = new Array();

 father1 = new Father();
 father2 = new Father();

 father1.children.push('Adam');

 console.log(father2.children);
Wzorzec dynamicznego prototypu ⌘
 public class Father {
     public int age;
     public Father(int age) {
         this.age = age;
     }
     public int getAge() {
         return this.age;
     }
 }
 Father father1 = new Father(36);
 Father father2 = new Father(42);

 System.out.println(father1.getAge());
 System.out.println(father2.getAge());
 function Father(age, children) {
     this.age = age;
     this.children = children;
     if (typeof Father.__instance == "undefined") {
         Father.prototype.getAge = function() {
             return this.age;
         }
         Father.__instance = true;
     }
 }
 father1 = new Father(36, new Array("Adam"));
 father2 = new Father(42, new Array("Anna"));

 console.log(father1.getAge());
 console.log(father1.age);
 console.log(father1.children);
 
 console.log(father2.getAge());
 console.log(father2.age);
 console.log(father2.children);
  • Dziedziczenie
  • Słowo kluczowe this
  • Wzorzec prototypu
  • Pierwsza klasa

JavaScript i DOM ⌘

  • Czym jest DOM
  • Wezły (tagi oraz textNode)
  • Podstawowe elementy drzewa
  • "Ładowanie" dokumentu HTML i możliwość pracy z węzłem

JavaScript i zdarzenia (Events) ⌘

  • Programowanie oparte o zdarzenia
  • Wzorzec obserwatora
  • Omówienie i wykrywanie zdarzeń
  • Reakcja na zdarzenia

Wykrywanie błędów, obsługa wyjątków ⌘

  • Najczęstrze błędy
  • Komunikaty błędów
  • Logowanie błędów i pozyskiwanie informacji o obiektach
  • Obsługa wyjątków, konstrukcja try, catch, finally

jQuery - Podstawowe informacje ⌘

  • Co to jest juery
  • Krótka historia
  • jQuery i ECMA-262
  • jQuery alternatywy?
  • Zalety
    • Popularność
    • Liczba bibliotek
    • Niezależny od urządzenia klienta
  • Wady
    • Wielkość
    • Jakość pluginów

CDN...

Exercises

  • Got to repository