[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.78,0:00:03.53,Default,,0000,0000,0000,,Już wiemy, jak stworzyć typ obiektu Dialogue: 0,0:00:03.63,0:00:06.34,Default,,0000,0000,0000,,i dwa obiekty winstonokształtne, Dialogue: 0,0:00:06.44,0:00:09.40,Default,,0000,0000,0000,,a potem uruchomić je konstruktorami. Dialogue: 0,0:00:09.50,0:00:13.54,Default,,0000,0000,0000,,Typ obiektu nie musi być\Nkojarzony z właściwościami. Dialogue: 0,0:00:13.64,0:00:16.11,Default,,0000,0000,0000,,Może mieć też funkcjonalność. Dialogue: 0,0:00:16.21,0:00:18.91,Default,,0000,0000,0000,,Pomyślcie o świecie\Ni typach obiektów w nim. Dialogue: 0,0:00:19.01,0:00:20.20,Default,,0000,0000,0000,,Weźmy np. ludzi. Dialogue: 0,0:00:20.30,0:00:22.36,Default,,0000,0000,0000,,Wszyscy mamy wzrost i wiek, Dialogue: 0,0:00:22.46,0:00:26.29,Default,,0000,0000,0000,,wykonujemy też czynności:\Nśpimy, jemy, programujemy. Dialogue: 0,0:00:26.39,0:00:29.00,Default,,0000,0000,0000,,Chcemy skojarzyć te funkcje Dialogue: 0,0:00:29.10,0:00:30.81,Default,,0000,0000,0000,,z typami obiektów. Dialogue: 0,0:00:30.91,0:00:34.48,Default,,0000,0000,0000,,Poprzedni odcinek skończyliśmy tak: Dialogue: 0,0:00:34.58,0:00:36.85,Default,,0000,0000,0000,,mamy funkcję „drawWinston”, Dialogue: 0,0:00:36.95,0:00:39.92,Default,,0000,0000,0000,,którą przywołujemy\Nprzy obu obiektach „Winston”. Dialogue: 0,0:00:40.02,0:00:42.89,Default,,0000,0000,0000,,Czy nie byłoby świetnie\Nprzyłączyć ją Dialogue: 0,0:00:42.99,0:00:45.48,Default,,0000,0000,0000,,do typu obiektu „Winston”? Dialogue: 0,0:00:45.58,0:00:48.02,Default,,0000,0000,0000,,Można to zrobić z łatwością. Dialogue: 0,0:00:48.63,0:00:52.40,Default,,0000,0000,0000,,Pod konstruktorem napiszemy:\N„Winston”... Dialogue: 0,0:00:52.50,0:00:54.98,Default,,0000,0000,0000,,(wielkie „w”), „. prototype”. Dialogue: 0,0:00:55.67,0:00:59.02,Default,,0000,0000,0000,,Słowa „prototype” jeszcze\Nw programowaniu nie widzieliście. Dialogue: 0,0:00:59.12,0:01:03.55,Default,,0000,0000,0000,,To właściwość obiektu, Dialogue: 0,0:01:03.65,0:01:05.78,Default,,0000,0000,0000,,do której możemy dołączać funkcje. Dialogue: 0,0:01:05.88,0:01:09.82,Default,,0000,0000,0000,,A każda instancja tego obiektu Dialogue: 0,0:01:09.92,0:01:13.02,Default,,0000,0000,0000,,będzie powiązana z tymi funkcjami. Dialogue: 0,0:01:13.12,0:01:15.76,Default,,0000,0000,0000,,Piszemy „.prototype”,\Npotem jest kropka, Dialogue: 0,0:01:15.86,0:01:18.72,Default,,0000,0000,0000,,a po niej nazwa funkcji, np. „draw”. Dialogue: 0,0:01:19.48,0:01:22.92,Default,,0000,0000,0000,,Dalej znak równości i możemy wziąć Dialogue: 0,0:01:23.02,0:01:24.45,Default,,0000,0000,0000,,kod „drawWinston”, Dialogue: 0,0:01:24.55,0:01:27.47,Default,,0000,0000,0000,,który umieścimy tutaj. Dialogue: 0,0:01:28.55,0:01:32.79,Default,,0000,0000,0000,,Przypisaliśmy funkcję „draw” Dialogue: 0,0:01:32.89,0:01:34.81,Default,,0000,0000,0000,,do prototypu Winstona. Dialogue: 0,0:01:34.91,0:01:37.31,Default,,0000,0000,0000,,Możemy przywoływać funkcję „draw” Dialogue: 0,0:01:37.41,0:01:39.89,Default,,0000,0000,0000,,do każdego obiektu\Ntypu Winstona. Dialogue: 0,0:01:39.99,0:01:44.49,Default,,0000,0000,0000,,Powinno to działać przy nastoletnim\Ni dorosłym Winstonie. Dialogue: 0,0:01:45.26,0:01:49.39,Default,,0000,0000,0000,,Funkcję, którą możemy\Nprzywołać do obiektu, Dialogue: 0,0:01:49.49,0:01:51.27,Default,,0000,0000,0000,,nazywamy metodą. Dialogue: 0,0:01:51.37,0:01:53.73,Default,,0000,0000,0000,,Będę używać tego słowa. Dialogue: 0,0:01:54.64,0:01:57.98,Default,,0000,0000,0000,,To jest metoda rysowania.\NW porządku. Dialogue: 0,0:01:58.08,0:02:01.04,Default,,0000,0000,0000,,Skasujemy to i to... Dialogue: 0,0:02:01.14,0:02:03.76,Default,,0000,0000,0000,,Spróbujmy przywołać „draw”. Dialogue: 0,0:02:03.86,0:02:05.64,Default,,0000,0000,0000,,Mamy: „winstonTeen.draw”. Dialogue: 0,0:02:06.83,0:02:09.75,Default,,0000,0000,0000,,Wyskoczył komunikat błędu. Dialogue: 0,0:02:09.85,0:02:13.97,Default,,0000,0000,0000,,„WinstObject niezdefiniowany”.\NNo dobrze. Dialogue: 0,0:02:14.51,0:02:18.34,Default,,0000,0000,0000,,Wcześniej wprowadzaliśmy\Nten argument do „drawWinston”, Dialogue: 0,0:02:18.70,0:02:20.64,Default,,0000,0000,0000,,czyli do obiektu „Winston”. Dialogue: 0,0:02:20.74,0:02:22.80,Default,,0000,0000,0000,,Już tego nie robimy. Dialogue: 0,0:02:22.90,0:02:26.35,Default,,0000,0000,0000,,Możemy to zmienić, Dialogue: 0,0:02:26.45,0:02:28.44,Default,,0000,0000,0000,,i co tu wprowadzimy? Dialogue: 0,0:02:28.54,0:02:30.74,Default,,0000,0000,0000,,Trzeba dać „winstonTeen”. OK. Dialogue: 0,0:02:30.84,0:02:33.86,Default,,0000,0000,0000,,Udało się, ale to głupie. Dialogue: 0,0:02:33.96,0:02:37.62,Default,,0000,0000,0000,,Przywołuję funkcję „draw”\Ndo obiektu, Dialogue: 0,0:02:38.48,0:02:41.89,Default,,0000,0000,0000,,więc nie powinnam dodatkowo\Nobiektu wprowadzać! Dialogue: 0,0:02:41.99,0:02:43.35,Default,,0000,0000,0000,,Dwa razy to samo! Dialogue: 0,0:02:43.84,0:02:45.79,Default,,0000,0000,0000,,Nie powinniśmy tego robić. Dialogue: 0,0:02:45.89,0:02:48.45,Default,,0000,0000,0000,,Skasujmy to więc i pomyślmy. Dialogue: 0,0:02:48.55,0:02:50.53,Default,,0000,0000,0000,,Gdy jesteśmy wewnątrz obiektu, Dialogue: 0,0:02:50.63,0:02:53.66,Default,,0000,0000,0000,,jak dostać się do jego właściwości? Dialogue: 0,0:02:54.25,0:02:56.40,Default,,0000,0000,0000,,Spójrzmy na konstruktora. Dialogue: 0,0:02:56.50,0:02:59.33,Default,,0000,0000,0000,,Przypomnijmy sobie\Nhasło „this”. Aha! Dialogue: 0,0:03:00.41,0:03:03.16,Default,,0000,0000,0000,,A gdybyśmy zmienili to w to? Dialogue: 0,0:03:04.48,0:03:07.41,Default,,0000,0000,0000,,Zmieniamy „winstObject”\Nw „this”. Dialogue: 0,0:03:08.49,0:03:10.71,Default,,0000,0000,0000,,Jesteśmy wewnątrz obiektu. Dialogue: 0,0:03:10.81,0:03:13.89,Default,,0000,0000,0000,,Ta funkcja łączy się z obiektem; Dialogue: 0,0:03:13.99,0:03:16.67,Default,,0000,0000,0000,,„this” odnosi się\Ndo obiektu bieżącego. Dialogue: 0,0:03:16.83,0:03:19.08,Default,,0000,0000,0000,,Możemy więc napisać „this” Dialogue: 0,0:03:19.18,0:03:23.08,Default,,0000,0000,0000,,i zyskamy dostęp do wszystkich\Nwłaściwości bieżącego obiektu. Dialogue: 0,0:03:23.18,0:03:26.22,Default,,0000,0000,0000,,Udało się! Świetnie, prawda? Dialogue: 0,0:03:26.69,0:03:30.46,Default,,0000,0000,0000,,Teraz napiszmy:\N„winstonAdult.draw”. Dialogue: 0,0:03:32.07,0:03:35.59,Default,,0000,0000,0000,,Jest! Mamy dostęp\Ndo właściwości „winstonAdult”, Dialogue: 0,0:03:35.69,0:03:37.96,Default,,0000,0000,0000,,bo ten obiekt został przywołany. Dialogue: 0,0:03:38.06,0:03:40.75,Default,,0000,0000,0000,,To jest rewelacyjne w haśle „this”. Dialogue: 0,0:03:40.85,0:03:43.61,Default,,0000,0000,0000,,Chociaż czasami trudno je wymówić. Dialogue: 0,0:03:45.58,0:03:49.46,Default,,0000,0000,0000,,Było wesoło, więc dodajmy\Nkolejną metodę. Dialogue: 0,0:03:49.56,0:03:51.83,Default,,0000,0000,0000,,Co jeszcze może robić Winston? Dialogue: 0,0:03:51.93,0:03:53.57,Default,,0000,0000,0000,,Niech mówi. Dialogue: 0,0:03:53.67,0:03:56.37,Default,,0000,0000,0000,,Dajmy: „Winston.prototype.talk”. Dialogue: 0,0:03:56.47,0:04:00.28,Default,,0000,0000,0000,,Do prototypu możemy dodać\Ntyle metod, ile chcemy. Dialogue: 0,0:04:00.38,0:04:04.53,Default,,0000,0000,0000,,Napiszmy: „Jestem Winston!”. Dialogue: 0,0:04:05.37,0:04:08.76,Default,,0000,0000,0000,,A potem jeszcze: „this.x+20” Dialogue: 0,0:04:08.86,0:04:11.54,Default,,0000,0000,0000,,i „this.y+150”. Dialogue: 0,0:04:12.70,0:04:15.91,Default,,0000,0000,0000,,Nic się nie wydarzyło, Dialogue: 0,0:04:16.01,0:04:19.76,Default,,0000,0000,0000,,bo jeszcze nie przywołałam funkcji. Dialogue: 0,0:04:19.86,0:04:21.22,Default,,0000,0000,0000,,Niech nastolatek mówi. Dialogue: 0,0:04:21.32,0:04:24.43,Default,,0000,0000,0000,,„winstonTeen.talk”.\NGada cały czas. Dialogue: 0,0:04:24.53,0:04:29.61,Default,,0000,0000,0000,,„Jestem Winston!”.\NA teraz niech mówi dorosły. Dialogue: 0,0:04:30.44,0:04:31.56,Default,,0000,0000,0000,,Hura! Dialogue: 0,0:04:32.08,0:04:35.34,Default,,0000,0000,0000,,Mamy teraz typ obiektu „Winston” Dialogue: 0,0:04:35.44,0:04:38.13,Default,,0000,0000,0000,,z właściwościami: nazwą,\Nwiekiem, „x” i „y”. Dialogue: 0,0:04:38.23,0:04:39.83,Default,,0000,0000,0000,,I jest funkcjonalny. Dialogue: 0,0:04:39.93,0:04:44.96,Default,,0000,0000,0000,,Zachowuje się różnie\Nw zależności od właściwości. Dialogue: 0,0:04:45.06,0:04:48.30,Default,,0000,0000,0000,,Możemy stworzyć tyle\Ninstancji Winstona, ile chcemy, Dialogue: 0,0:04:48.40,0:04:51.02,Default,,0000,0000,0000,,i przywołać dowolną z metod. Dialogue: 0,0:04:51.18,0:04:52.62,Default,,0000,0000,0000,,Nieźle, co?