[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.75,0:00:03.57,Default,,0000,0000,0000,,V posledním videu jsme se naučili,\Njak vytvořit typ objektu, Dialogue: 0,0:00:03.57,0:00:06.37,Default,,0000,0000,0000,,který reprezentoval dva typu\Nobjektů podobných Winstonovi. Dialogue: 0,0:00:06.37,0:00:09.23,Default,,0000,0000,0000,,Potom jsme je inicializovali\Npomocí konstruktorů. Dialogue: 0,0:00:09.23,0:00:13.47,Default,,0000,0000,0000,,Typ objektu ale nemusí\Nsouviset pouze s vlastnostmi. Dialogue: 0,0:00:13.47,0:00:15.87,Default,,0000,0000,0000,,Může být také spojen\Ns funkcionalitou. Dialogue: 0,0:00:15.87,0:00:18.93,Default,,0000,0000,0000,,Představte si svět a všechny \Ntypu objektů, které obsahuje. Dialogue: 0,0:00:18.93,0:00:20.29,Default,,0000,0000,0000,,Například my lidé. Dialogue: 0,0:00:20.29,0:00:22.31,Default,,0000,0000,0000,,Všichni máme výšku a věk, Dialogue: 0,0:00:22.31,0:00:24.20,Default,,0000,0000,0000,,ale také máme věci, \Nkteré můžeme dělat, Dialogue: 0,0:00:24.20,0:00:26.29,Default,,0000,0000,0000,,jako třeba spát, jíst \Na programovat. Dialogue: 0,0:00:26.29,0:00:30.68,Default,,0000,0000,0000,,Chceme být schopni spojit\Ntyto funkce s jejich typy objektů. Dialogue: 0,0:00:30.68,0:00:34.28,Default,,0000,0000,0000,,Tento program máme v bodě,\Nkde jsme skončily minule. Dialogue: 0,0:00:34.29,0:00:39.44,Default,,0000,0000,0000,,Máme zde funkci drawWinston, \Nkterou voláme na oba objekty Winstona. Dialogue: 0,0:00:39.44,0:00:44.92,Default,,0000,0000,0000,,Nebylo by hezké, kdybychom to mohli\Nspojit s Winstonovým typem objektu? Dialogue: 0,0:00:45.58,0:00:48.31,Default,,0000,0000,0000,,Můžeme a je to celkem snadné. Dialogue: 0,0:00:48.57,0:00:55.58,Default,,0000,0000,0000,,Pod naším konstruktorem napíšeme\N"Winston" – velké W – tečka "prototype". Dialogue: 0,0:00:55.58,0:00:59.23,Default,,0000,0000,0000,,"Prototype" je nové slovo,\Nkteré jste asi ještě neviděli. Dialogue: 0,0:00:59.23,0:01:05.60,Default,,0000,0000,0000,,Prototyp je vlastnost objektu, \Nke které můžeme připojit funkce. Dialogue: 0,0:01:05.60,0:01:07.32,Default,,0000,0000,0000,,To znamená, Dialogue: 0,0:01:07.32,0:01:12.99,Default,,0000,0000,0000,,že každý objekt, který je prototypem,\Nbude obsahovat dané funkce. Dialogue: 0,0:01:12.99,0:01:17.63,Default,,0000,0000,0000,,Můžeme tedy napsat tečka "prototype" \Na poté tečka a název funkce. Dialogue: 0,0:01:17.63,0:01:24.40,Default,,0000,0000,0000,,Takže napíšeme "draw" rovná se \Na pak vezmeme náš kód z drawWinston, Dialogue: 0,0:01:24.40,0:01:28.03,Default,,0000,0000,0000,,který následně můžeme\Nvložit sem dovnitř. Dialogue: 0,0:01:29.04,0:01:34.39,Default,,0000,0000,0000,,Takže právě jsme připojili funkci\N"draw" k našeme prototypu Winstona. Dialogue: 0,0:01:34.78,0:01:35.84,Default,,0000,0000,0000,,To znamená, Dialogue: 0,0:01:35.84,0:01:40.01,Default,,0000,0000,0000,,že bychom měli být schopni volat draw() \Nu libovolného objektu typu Winston. Dialogue: 0,0:01:40.01,0:01:45.33,Default,,0000,0000,0000,,Měli být schopni zavolat draw() \Nna winstonTeen nebo winstonAdult. Dialogue: 0,0:01:45.33,0:01:49.55,Default,,0000,0000,0000,,Když máme takovouto funkci,\Nkterou můžeme zavolat na objektu, Dialogue: 0,0:01:49.55,0:01:51.44,Default,,0000,0000,0000,,nazýváme ji "method". Dialogue: 0,0:01:51.44,0:01:54.19,Default,,0000,0000,0000,,Takže mě teď budete slyšet,\Njak říkám "metoda". Dialogue: 0,0:01:54.71,0:01:57.09,Default,,0000,0000,0000,,Řekněme tedy, že se jedná \No "draw method". Dialogue: 0,0:01:57.92,0:02:00.89,Default,,0000,0000,0000,,Tak a teď odstraníme tohle. Dialogue: 0,0:02:00.89,0:02:05.50,Default,,0000,0000,0000,,Zkusíme, jestli teď můžeme volat \Ndraw(), winstonTeen.draw() Dialogue: 0,0:02:07.01,0:02:08.29,Default,,0000,0000,0000,,A máme chybu. Dialogue: 0,0:02:08.29,0:02:13.58,Default,,0000,0000,0000,,Chybové hlášení nám říká,\Nže "winstObject" není definován. Dialogue: 0,0:02:14.37,0:02:18.37,Default,,0000,0000,0000,,Předtím jsme vložili tento \Nparametr do drawWinston, Dialogue: 0,0:02:18.37,0:02:22.71,Default,,0000,0000,0000,,což byl objekt typu Winston,\Nale teď už to nepředáváme. Dialogue: 0,0:02:22.71,0:02:26.59,Default,,0000,0000,0000,,Mohli bychom to změnit tak,\Nabychom to předali. Dialogue: 0,0:02:27.18,0:02:30.34,Default,,0000,0000,0000,,To, co chceme předat,\Nbude winstonTeen. Dialogue: 0,0:02:30.34,0:02:33.90,Default,,0000,0000,0000,,Teď to funguje, ale vypadá \Nto opravdu nešikovně. Dialogue: 0,0:02:33.90,0:02:38.08,Default,,0000,0000,0000,,Již volám draw na \Nsamotném objektu. Dialogue: 0,0:02:38.08,0:02:41.78,Default,,0000,0000,0000,,Neměla bych vkládat \Nznovu objekt jako takový. Dialogue: 0,0:02:41.78,0:02:43.88,Default,,0000,0000,0000,,To se zdá nadbytečné. Dialogue: 0,0:02:43.88,0:02:45.98,Default,,0000,0000,0000,,A je to pravda a neměli\Nbychom to tak dělat. Dialogue: 0,0:02:45.98,0:02:48.24,Default,,0000,0000,0000,,Pojďme to smazat\Na zamyslet se. Dialogue: 0,0:02:48.24,0:02:50.44,Default,,0000,0000,0000,,Pokud jsme uvnitř objektu, Dialogue: 0,0:02:50.44,0:02:54.27,Default,,0000,0000,0000,,co bychom mohli použít pro\Npřístup k vlastnostem objektu? Dialogue: 0,0:02:54.27,0:02:56.31,Default,,0000,0000,0000,,Když se podíváte na konstruktor, Dialogue: 0,0:02:56.31,0:02:58.66,Default,,0000,0000,0000,,možná si vybavíte speciální \Nklíčové slovo "this". Dialogue: 0,0:03:00.33,0:03:04.12,Default,,0000,0000,0000,,Co kdybychom nahradili \Ntoto za "this"? Dialogue: 0,0:03:04.12,0:03:07.92,Default,,0000,0000,0000,,Takže změníme \NwinstObject na "this". Dialogue: 0,0:03:08.38,0:03:10.69,Default,,0000,0000,0000,,Protože jsme teď uvnitř objektu, Dialogue: 0,0:03:10.69,0:03:16.78,Default,,0000,0000,0000,,tak je funkce vyhodnocena na objektu, \Ntakže "this" odkazuje na aktuální objekt. Dialogue: 0,0:03:16.78,0:03:23.04,Default,,0000,0000,0000,,Takže nám stačí napsat "this" a získáme \Npřístup ke všem vlastnostem objektu. Dialogue: 0,0:03:23.04,0:03:25.28,Default,,0000,0000,0000,,A jak vidíte,\Nfunguje to! Dialogue: 0,0:03:26.52,0:03:31.55,Default,,0000,0000,0000,,Teď už nám stačí napsat\NwinstonAdult.draw(). Dialogue: 0,0:03:31.91,0:03:35.29,Default,,0000,0000,0000,,A bude to mít přístup k\Nvlastnostem winstonAdult, Dialogue: 0,0:03:35.29,0:03:38.02,Default,,0000,0000,0000,,protože to je ten objekt, \Nkterý se volá. Dialogue: 0,0:03:38.02,0:03:41.02,Default,,0000,0000,0000,,A to je důvod, proč je slovo\N"this" opravdu hodně dobré! Dialogue: 0,0:03:41.02,0:03:44.29,Default,,0000,0000,0000,,I když to může být trochu\Nmatoucí, když ho píšeme. Dialogue: 0,0:03:45.53,0:03:49.29,Default,,0000,0000,0000,,To byla spousta legrace,\Nnyní přidejme další metodu. Dialogue: 0,0:03:49.29,0:03:51.91,Default,,0000,0000,0000,,Co dalšího by Winston\Nmohl udělat? Dialogue: 0,0:03:51.91,0:03:53.50,Default,,0000,0000,0000,,Možná bude mluvit. Dialogue: 0,0:03:53.50,0:03:56.24,Default,,0000,0000,0000,,Takže uděláme\NWinston.prototype.talk. Dialogue: 0,0:03:56.24,0:04:00.63,Default,,0000,0000,0000,,Do prototypu můžeme připojit \Ntolik metod, kolik chceme. Dialogue: 0,0:04:00.63,0:04:05.24,Default,,0000,0000,0000,,Napíšeme: "Jsem Winston!" Dialogue: 0,0:04:05.24,0:04:12.75,Default,,0000,0000,0000,,A pak napíšeme \Nthis.x+20 a this.y+150. Dialogue: 0,0:04:14.59,0:04:15.95,Default,,0000,0000,0000,,Nic se nestalo. Dialogue: 0,0:04:15.95,0:04:19.53,Default,,0000,0000,0000,,Ale to proto, že jsem tu \Nfunkci ještě nezavolala. Dialogue: 0,0:04:19.53,0:04:24.21,Default,,0000,0000,0000,,Pojďme si tedy promluvit,\Nzavoláme winstonTeen.talk (). Dialogue: 0,0:04:24.21,0:04:25.55,Default,,0000,0000,0000,,"Jsem Winston!" Dialogue: 0,0:04:26.41,0:04:29.84,Default,,0000,0000,0000,,A pak napíšeme:\NwinstonAdult.talk() Dialogue: 0,0:04:31.93,0:04:38.01,Default,,0000,0000,0000,,Teď máme tento objekt Winstona, \Nkterý má vlastnosti: jméno, věk, x, y. Dialogue: 0,0:04:38.22,0:04:41.45,Default,,0000,0000,0000,,A má taky funkcionality\Njako chování a metody, Dialogue: 0,0:04:41.50,0:04:44.44,Default,,0000,0000,0000,,které fungují odlišně \Nv závislosti na vlastnostech. Dialogue: 0,0:04:45.11,0:04:48.15,Default,,0000,0000,0000,,A můžeme vytvořit tolik instancí\NWinstona, kolik jen chceme. Dialogue: 0,0:04:48.15,0:04:50.65,Default,,0000,0000,0000,,A můžeme na ně zavolat\Nkteroukoli z těchto metod. Dialogue: 0,0:04:50.65,0:04:52.87,Default,,0000,0000,0000,,Dost dobrý, že?