Programování v jazyce JavaScript

Podobné dokumenty
Programování v jazyce JavaScript

Programování v jazyce JavaScript

Programování v jazyce JavaScript

Programování v jazyce JavaScript

Programování v jazyce JavaScript

Programování v jazyce JavaScript

Programování v jazyce JavaScript

Programování v jazyce JavaScript

Více o konstruktorech a destruktorech

JavaScript 101. "Trocha života do statických stránek"

Název Live prez Sear enta Maps

Mělká a hluboká kopie

Programování v jazyce JavaScript

Jazyk C# a platforma.net

Programování v PHP. Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze. Další možnosti formulářů

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

8 Třídy, objekty, metody, předávání argumentů metod

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

HTML stránka odkaz, zvýraznění textu

WWW a HTML. Základní pojmy. Ivo Peterka

NSWI096 - INTERNET JavaScript

!!Via!AUREA,!s.r.o.!

NA CO SI DÁT POZOR V JAVASCRIPTU? Angular.cz

Ajax - úvod. Klíčové pojmy: Ajax, skriptování na straně klienta a serveru, objekt XMLHttpRequest, DOM model.

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

int ii char [16] double dd název adresa / proměnná N = nevyužito xxx xxx xxx N xxx xxx N xxx N

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016

Programujeme v softwaru Statistica

Základy objektové orientace I. Únor 2010

GIS integrované využití 6 sem podtitul nebo stručně obsah. OpenLayers

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Generické programování

Objekty v PHP 5.x. This is an object-oriented system. If we change anything, the users object.

HTML - Úvod. Zpracoval: Petr Lasák

Jazyk C# - přístup k datům

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);

4. Rekurze. BI-EP1 Efektivní programování Martin Kačer

NPRG030 Programování I, 2015/16 1 / :25:32

Lambda funkce Novinky v interfaces Streamy Optional - aneb zbavujeme se null. Java 8. Ondřej Hrstka

Jazyk C# a platforma.net

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Formuláře. Internetové publikování. Formuláře - příklad

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Jazyk C# (seminář 6)

Soubor jako posloupnost bytů

Programování v Pythonu

ANOTACE vytvořených/inovovaných materiálů

PB161 Programování v jazyce C++ Přednáška 4

Virtuální metody - polymorfizmus

Pear - hruška Systém pro implementaci a distribuci znovupoužitelných komponent (v PHP) Strukturovaná knihovna open-source (PHP) skriptů Systém pro dis

PŘEHLED A MOŽNOSTI VYUŽITÍ WEBOVÝCH MAPOVÝCH SLUŽEB

Mgr. Vlastislav Kučera lekce č. 2

Mgr. Vlastislav Kučera přednáška č. 2

C++ přetěžování funkcí a operátorů. Jan Hnilica Počítačové modelování 19

Programování v C++ 2, 4. cvičení


Pole stručný úvod do začátku, podrobně později - zatím statická pole (ne dynamicky) - číslují se od 0

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

Výjimky a ošetřování chyb v PHP. Who is General Failure and why is he reading my disk?!

dovolují dělení velkých úloh na menší = dekompozice

konstruktory a destruktory (o)

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Vstupní požadavky, doporučení a metodické pokyny

Programování v Pythonu

Objektov orientované programování. C++ Akademie SH. 7. Objektov orientované programování. Michal Kvasni ka. Za áte níci C++ 2.

Chování konstruktorů a destruktorů při dědění

HTML stránka vložení obrázku

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný

Koláčky, sezení. Martin Klíma

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

NSWI142 Webové aplikace Zkouškový test

Přetěžování operátorů

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

(X)HTML, CSS a jquery

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

DUM 06 téma: Tvorba makra pomocí VBA

Sada 1 - PHP. 03. Proměnné, konstanty

Principy objektově orientovaného programování

Programování v C++ 1, 1. cvičení

Základy programování (IZP)

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

Reflexe. Aplikační programování v Javě (BI-APJ) - 8 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8

Programování v C++, 2. cvičení

Pointery II. Jan Hnilica Počítačové modelování 17

Funkce, podmíněný příkaz if-else, příkaz cyklu for

Internet WEB stránky HTML, Hypertext MarkUp Language - nadtextový jazyk - Místo příkazů obsahuje tagy - značky

Programování v C++ 3, 3. cvičení

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

14. Složitější konstrukce

Funkce, intuitivní chápání složitosti

Aplikační vrstva. Úvod do Php. Ing. Martin Dostal

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro:

Úvod do programování. Lekce 5

Transkript:

Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Anonymní funkce BI-JSC Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti P. Štěpán PHP BI-PHP, výpis 7 1/5

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <h1>anonymni (lambda) funkce</h1> <script type="text/javascript"> // anonymni funkce - nemaji jmeno var f = function(p1){ return p1+p2; // lze pouzit jako parametry funkci nebo vracene hodnoty function volej(i,j,f){ f(i,j); // volej(2,3,function(r,s){alert(r + s);); // uzavery (closures): funkce, ktere maji pristup k promennym // z oboru platnosti jine fce (jsou to casto funkce, vytvorene // uvnitr jine fce) function createfunction(p1,p2){ return function(x){ return p1*x + p2; var vytvorena = createfunction (2,3); // alert(vytvorena(3)); I kdyz je funkce vracena, prirazena do promenne a pouzita na jinem miste, stale ma PRISTUP k promennym z vnejsi funkce (zde p1,p2). Pointer na retez oboru platnosti se priradi specielni interni vlastnosti, zvane [[Scope]] Retez oboru platnosti vnitrni funkce totiz obsahuje take obor platnosti vnejsi funkce. Ten tedy nemuze byt zrusen, dokud je platna vnitrni funkce. Uzavery tak s sebou nesou i obor platnosti rodicovske funkce - mohou tedy zabirat vice pameti. Pozor na pouzivani promennych v uzaverech: uzaver obdrzi vzdy POSLEDNI hodnotu jakekoli promenne z rodicovske funkce: P. Štěpán PHP BI-PHP, výpis 7 2/5

function vytvorfunkce(){ var polefunkci = new Array(); for (var i = 0; i < 10; i++){ polefunkci[i] = function(){ return i; return polefunkci; var funkce = vytvorfunkce(); // alert(funkce[2]()); // 10 - posledni hodnota // Zda se, ze kazda funkce bude vracet hodnotu sveho indexu. Ale ve // skutecnosti vraci kazda funkce 10 - aktualni hodnotu pomenne i // v dobe volani funkce - tedy az po skonceni cyklu. // Pokud chceme, aby i-ta funkce vracela i, muzeme si pomoci dalsi // anonymni funkci: function vytvorfunkce(){ var polefunkci = new Array(); for (var i = 0; i < 10; i++){ polefunkci[i] = function(num){ return num; ; (i); // okamzite volani prave vytvorene funkce!! return polefunkci; funkce = vytvorfunkce(); // alert(funkce[4]()); // 4 anonymni funkce (ktera se ihned zavola - function(num){...(i) s hodnotou i) ma jediny argument num, coz je hodnota, kterou chceme, aby funkce vracela. Argumenty se predavaji hodnotou, zkopiruje se do num aktualni hodnota i. Uvnitr anonymni fce se vytvori uzaver, ktery pristupuje k num - kazda funkce ma tedy svoji vlastni kopii num. pozor na this u anonymnich funkci: jsou povazovany za globalni, takze this vzdy ukazuje na object window (global), coz nemusi byt okamzite jasne: P. Štěpán PHP BI-PHP, výpis 7 3/5

var jmeno = "globalni"; var obj = { jmeno: "jmeno v objektu", fcezobrazjmeno: function(){ // metoda, ktera vraci anonymni fci return this.jmeno; // vraceni a okamzite zavolani vnitrni anonymni fce // ta je definovana v global, proto vraci SVE jmeno // alert(obj.fcezobrazjmeno()()); // globální // pro pristup k lokalnim promennym rodice nutno postupovat takto: var jmeno = "globalni"; var obj = { jmeno: "jmeno v objektu", fcezobrazjmeno: function(){ var thislokalni = this; return thislokalni.jmeno; alert(obj.fcezobrazjmeno()()); // jmeno v objektu Pozor v nekterych verzich IE: pouziva se nevhodny zpusob uvolnovani pameti pro objekty COM. A pokud na ne existuji odkazy prostrednictvim anonymnich funkci, tyto (casto velke) objekty se NEUVOLNI!! Simulace lokalnich promennych bloku pomoci anonymnich fci: JS definuje promenne v bloku vzdy na urovni rodicovske fce (nebo global). Napiseme-li ale (fomalni) definici a okamzite zavolani anonymni fce, promenne uvnitr ni se chovaji jako lokalni (tzv. soukromy obor platnosti): (function() { // blok s "lokalnimi" promennymi var z = "uvnitr"; // alert(z); )(); // definice a okamzite vyvolani anonymni fce // alert(typeof lokalni); // undefined P. Štěpán PHP BI-PHP, výpis 7 4/5

// anonymni fce lze pouzit napr. i k definovani lokalnich // vlastnosti a metod objektu: (function(){ // privatni vlastnosti a metody // definovany pomoci var - lokalni v anonymni fci var privatnipromenna = 3; // "klasicka" definice fce - ty jsou vzdy privatni // v obklopujici fci function privatnifce(x){ return x + x; // konstruktor - FUNKCNI VYRAZ (nikoli klasicka definice) // prirazen do promenne BEZ var - globalni MujObjekt = function(){ // prazdny konstruktor // verejne metody MujObjekt.prototype.verejnaFce = function(){ return privatnifce(privatnipromenna++); // pouziva soukrome )(); //...() - okamzite zavolani var obj = new MujObjekt(); alert(obj.verejnafce()); // konstruktor definovan globalne </script> </body> </html> P. Štěpán PHP BI-PHP, výpis 7 5/5