>> Dobra, dzisiaj, Idę się mówić
o JavaScript i jak to różni się od innych języków
że może być lubiłem PHP.
Tak więc w ostatnim wykładzie na Poniedziałek, rozmawialiśmy trochę
o tym, co jest podobne, co jest zaznajomieni między JavaScript
i PHP lub Python i Ruby lub C lub innych językach
że już jesteś zna.
Ale w rzeczywistości JavaScript ma naprawdę unikalny zabiorą
modelu obiektu, który sprawia, to jakby zupełnie inny
niż w większości języków idziesz do czynienia.
Więc funkcje sortowania
z niedoceniany Koncepcja w JavaScript.
Są one o wiele bardziej skuteczne niż są one w innych językach
ponieważ mogą one w - dla jednej przyczyny
są w stanie być ustawić jako wartości.
Więc tutaj mamy var x równa się funkcji
i to jest pierwsza klasa wartość, która może być przekazywana
wokół jako argument.
Więc nie musisz się Oświadczam funkcji X
i po prostu użyć X w tym zakresie.
Można przekazać wartość x w dowolnym miejscu na całym wiecie,
jako argument do innej funkcji
gdzie można moduł eksportu jak Dawid wspomniał w węźle.
Więc następnym punktem jest
że funkcja jest obiekt w JavaScript.
Więc rzeczywiście można ustawić właściwości jako wartości
na funkcji i po prostu traktować to jak jest obiekt.
Dzięki czemu podczas pracy z jQuery, wiesz, że dolar
a następnie przekazać Przełącznik do niego
i powołać go jako funkcję.
Ale wtedy też Dolar dot AJAX nie.
I to nie rodzaj sensu, jeśli uważasz, że
z funkcji, tak jak jest coś można powołać
lub zadzwoń.
Ale obsługa JavaScript, pozwala na ustawić właściwości na funkcjach
właściwości jako statyczne z zaledwie x kropka someProp
jak wskazałem tam.
Kolejnym punktem, który jesteśmy pójdzie na trochę więcej
głębokość jest to, że Funkcje można leczyć
jako klasy w JavaScript.
Tak więc istnieje koncepcja tego nowego operatora
która tworzy nową instancję Funkcja wraz z rodzajem
z jak klasy-jak ciało który znajduje się wraz z nim
i zamierzamy iść do niego trochę więcej,
nazywa się prototyp.
I to jest to, co sprawia, JavaScript wyjątkowa w porównaniu
na inne języki które opierają klasa
JavaScript jest prototyp oparty.
A potem po prostu na tam na dole,
Funkcja może być tak zwany wyraźnie, jak jesteśmy przyzwyczajeni.
Więc to nic nowego.
Inną rzeczą jest, że to wyjątkowy
że tablice są rzeczywiście obiektów.
Oni nie lubią, że są w PHP
gdzie po prostu stworzyć nowa tablica.
To jest właściwie skrótem za to, nową tablicę.
I tablica jest faktycznie Podklasa obiektu.
Tak, to jest coś różne i pójdę
do trochę więcej szczegółów na ten temat.
I możliwości debugowania
z JavaScript są naprawdę sobie równych w miarę widziałem.
To jest zrzut ekranu Inspektor w Chrome
które mamy zamiar używać do końca
z dzisiejszej prezentacji.
I dostać się do tego, po prostu Przejdź do menu Plik narzędzia programistyczne
Inspektor i otwarty Chrome lub kliknij prawym przyciskiem
i kliknij Show Element I myślę, że jest na stronie HTML
i myślę, że to polecenie Opcja J To otwiera.
Ale idziemy w to i ty może faktycznie ustawić punkty przerwania
jak masz uruchomiony przez kod JavaScript i sortowania
od oceny tego, co lokalne zmienne są, jaka jest wartość
tego jest, a to sprawia, że sposób łatwiejszy do debugowania kodu.
I nie - nie jest to ograniczone do kodu po stronie przeglądarki
ale rzeczywiście można uruchomić instancję
Inspektor ten Chrome dla usługi kodu po stronie
co jest naprawdę miłe, bo może przejść przez linię po linii
jak przyjdzie Ci do żądania serwer i zobaczyć, co się dzieje
i grać ze zmiennymi w konsoli tutaj.
Tak jak wspomniałem, JavaScript Prototyp jest oparty na języku
co oznacza, że ​​nie jest to zestaw wartości domyślnych, które są sortowania
ukrytych dla każdej funkcji
w obiekcie kropką Obiekt prototypowy.
Więc jest to rodzaj skrótu tylko różne wartości domyślne
że podczas wywołania funkcjonować z nowym hasła,
te są określane przez domyślnie jako funkcje
które są dostępne na przykład.
Rzeczywiście jest tak, że bardzo wydajny dla -
jest skutecznym sposobem tworzenie obiektów mądry pamięci
ponieważ obsługa JavaScript czas ma tylko do śledzenia
prototypu przedmiotu.
To rodzaj wskazuje, że
kiedy cretae nowy instancją klasy.
I można też naśladować Jak wiadomo od spadków
w językach opartych na klasach gdzie masz sort
z jak to przebiega, że rozciąga się, że można naśladować
że w JavaScript przez to, co się nazywa
łańcuch prototypów.
I zobaczymy przykłady o tym.
Więc jeśli - pluginy jQuery faktycznie zalecają jQuery
Autorzy korzystania dolara kropkę fn, aby dodać funkcjonalność
do biblioteki jQuery.
A my rzeczywiście będzie przejść do - Tak, na tej stronie,
mamy dolara - Mam włączone jQuery.
A jeśli nie dolara dot w konsoli
których wspomniałem przynosząc można się poprzez polecenie J shift
lub po prostu będzie Zobacz, Narzędzia dla deweloperów, programistów
i przechodząc do zakładki źródeł.
[Niesłyszalny Uwaga]
Owszem. Więc kiedy zacząłem wpisać w zmiennej,
to auto dla mnie zakończony to, co jest tam dostępne.
Więc wpisałem w dolara i mogę zobacz Myślę Chrome ma jedne
Wbudowany dolara, dolar i dolar x.
Więc teraz po prostu chcę Dolar i umieścić w kropce.
I to pokazuje mi wszystkie właściwości
które są dostępne na obiekcie jQuery.
Ale jeśli to zrobię dolara Prototyp kropka,
Teraz widzę wszystkie metody że jestem przyzwyczajony do korzystania
kiedy mam dolara, selektor a potem, że łańcuch się z,
wiesz, dodać klasę lub dołączyć lub rozmycie lub dowolne podobne.
Te są faktycznie prototypu
który pod maską jQuery tworzy nową instancję sobie
i to wszystko jakby ukrywa te dane od ciebie.
Więc punkt, że byłem co z powrotem tutaj
z funkcją, to faktycznie ukryć prototyp od Ciebie
Alias ​​to i tak do dolara dot fn.
Tak więc większość ludzi rzeczywiście nie zdaje sobie sprawy
że jest prototypem pod that's kaptur -
, które można wykorzystać i Dodaj dodatkowe funkcje
do każdej instancji jQuery jeśli chcesz.
Więc "nowy" operator naprawdę trudno coś w rodzaju
do zrozumienia na początku.
Podczas wywołania funkcji "Nowy",
to jest zupełnie inna sposób wywoływania funkcji
Jeśli tak, jak nazywa się to wyraźnie.
Więc "nowy" operator tworzy co nazywa się nowa instancja
obiektu lub nowy wystąpienie, można myśleć
przedmiotu jako klasy.
A gdy tak się stanie, to wartość Z tego co może znać
się z jQuery, że zestaw ten rodzaj
do tego, co jest wygodne w tym czasie.
Zwykle ustawić go bieżący węzeł DOM, że jesteś
na jak przechodzisz jak każdy albo coś w tym stylu.
Oni - Ta wartość ma być na przykład wartość
, który został utworzony z "nowym", który zawiera wszystko,
na łańcuchu prototypu i wszystko metod, które chcesz znaleźć
jako właściwości prototypu.
Tak więc zależy Funkcja jest wywoływana,
jaka jest wartość tego jest.
I to naprawdę mylące jeśli jesteś nowy w JavaScript.
Ale każda funkcja, która się nazywa nie - ma na tym poziomie.
Więc nawet jeśli nie utworzono Nowy przykład czegoś,
Zakłada się, że być globalne.
Lub można wywołać funkcję przy użyciu metody połączenia
gdzie stosuje się metodę w JavaScript.
Można tę funkcję i określić, co powinno być.
Więc można zrobić to dynamiczny, co jest naprawdę potężny
ale również pozwala na wykonywanie rzeczy, które mogą wprowadzać w błąd
i mylące innych deweloperów
jeśli nie są one używane do tego faktu.
I jQuery, jestem zdania, sprawia, że ​​jeszcze bardziej skomplikować
przez co wygodne i ustawienie go
do bieżącego węzła DOM.
Ale prosta zasada do zapamiętania czym wartość ta jest
gdy szukasz
na to wezwanie funkcjonalnej co z kropką.
Więc jeśli masz obiektu
i to jest coś, kropka coś jest funkcją
że dzwonisz następnie Pierwsza wartość jest to wartość, co
to jest.
Więc tutaj jest przykład kodu
gdzie tworzę Nowy obiekt dosłowne
który jest po prostu obiekt stworzony z nawiasy
i mam ustawienie imię Bob
i wtedy mam sayName Metoda o której -
więc wewnątrz tego sayName jeśli mam x dot sayName,
Wartość ta jest równa x. ponieważ lewa
z kropką jest x. Więc jeśli Ja to nazywam x dot sayName,
to znaczy Hello Bob.
A potem kolejny przykład
gdzie ja właściwie przypisanie x kropka sayName, funkcja
zmiennej Y które jak wspomniałem
w JavaScript Ciebie można przypisać funkcje
do zmiennych, kiedy tylko chcesz, to jest naprawdę elastyczny, że sposób,
ale teraz, gdy wzywam Y, to porażka kontekst x.
Więc to jest teraz globalny lub jeśli jesteś w trybie ścisłym,
Wierzę, że jest to wartość null lub nieokreślony.
Ale - Y nie jest więc co masz spodziewałem się tutaj, jeśli szukasz
na x i idziesz zadzwonić sayName,
czekasz tę nazwę ma być Bob.
Ale jeśli się udało obiekt i nazywany jest
sama w sobie, to jest teraz globalny.
I to jest to, co było wspomnieć kiedy widzisz dolara dot tego,
często nie myślą o co się właściwie dzieje.
Ale jQuery rodzaj ma swoje własny język specyficzny domeną
do czynienia z tym i to nie jest to, co masz w zwyczaju
w JavaScript.
A ja na to uwagę bo to bardzo ważne
do pisania dobrze zorganizowany Kod zorientowany obiektowo
w obsługa JavaScript, żeby naprawdę dobra znajomość i zrozumienie
o tym, jak to działa i jak model obiektowy dzieła
i jak działa nowy podmiot.
W przeciwnym razie będzie koniec jQuery do spaghetti
gdzie wszystko jest swego w każdym miejscu
i tylko do czynienia z DOM.
Jeśli rzeczywiście można Napisać JavaScript
w bardziej zorganizowany sposób, to sprawia, że ​​o wiele łatwiej
pracować posortować odrębnych obawy
w kontaktach z aktualizowanie DOM i radzenia sobie
z rzeczywistą logiki i kodu.
Warto więc spojrzeć na Kilka przykładów w tym.
Więc mam tu kilka przykładów.
Więc jest to tylko prosty przykład z użyciem przedmiotu JavaScript
i dodanie kilku funkcji do niego, a następnie tworząc coś w rodzaju
z jak miniaturowy aplikacji.
Więc to jest bardzo proste w rzeczywistości.
Jedyną rzeczą, która robi to najpierw prosi swoją nazwę.
Więc powiem Tim a następnie może zmienić nazwę na Boba.
I to jest to wszystko Aplikacja robi.
Ale to, co chciałbym podkreślić się, jak to robi.
Więc mam ten generator nazw Obiekt, który ma sposobu rozruchu
który prosi użytkownika ich nazwy
tylko o wywołanie tej askForName
która tu jest Czy w wierszu
jeśli nazwa nie została przyporządkowana następnie ponownie prosi o nią
przez wywołanie tej askForName.
A potem, kiedy już dostanie nazwę, wywołuje to nazwisko aktualizacji.
Tak to ustawia Nazwa użytkownika w tagu H1.
A jeśli nazwa nie jest ustawiony, to zgłasza błąd.
[Niesłyszalny Uwaga]
Owszem. Tak ustawia go Nazwa użytkownika w tagu h1
dzwoniąc setDisplayName który ustawia HTML
w pojemniku JS i nazwy Jestem poprzedzania wszystkie moje HTML
z selektorów tylko dlatego, JS to dobry zwyczaj, aby dostać
się tylko do to nie jest tak mylące,
, gdy używasz przełączniki, takie jak identyfikatory lub klas
zarówno stylu i logiki
w JavaScript aplikacji Front End.
Bo jeśli masz inny grupy osób pracujących
na podstawie kodu i mają tam selektor
że projektant decyduje zmienić, bo it's -
nie wygląda świetnie, więc chcą umieścić w nowej klasie i podjąć
się do Ciebie, a ty opierając na nim w celach JavaScript,
następnie kod przerwy.
Dobrze jest poprzedzić i sortowania
podobnego nazw prawie Zajęcia związane JavaScript
lub atrybutów prefiks JS.
Więc to jest bardzo proste i można zobaczyć
we wszystkich tych przypadkach Jestem wywołanie podobnego do tego na końcu.
Więc to jest dobre zwyczaj, aby dostać się do,
dać go do Prawidłowa wartość powrotu.
W askForName nie jestem bo to ma sens
że masz nazwę z powrotem.
Ale co to pozwala Następnie można zrobić
jeśli zwróci tę aktualizację nazwa, to zwrotu wartości
z setDisplayName który jest zwrotu wartości tego.
I to pozwala na sortowanie łańcucha, jak jesteś przyzwyczajony
w jQuery powracając Wartość tego każdej chwili.
To odnosi się do Obecne obiekty
tak można nazwać ten punkt askForName kropka setDisplayName
i to utrzymać Wartość ta i pozwalają
aby mieć ładny łańcuch tam.
A następnie w - tak w Ten drugi przykład.
[Pauza]
Dobrze.
OK. Więc śmiało i otwórz konsolę
i przejść do mojego zakładce źródeł.
Będziemy pop to się rzeczywiście.
Więc w wywoływaczu Chrome narzędzia, które już wspomniałem,
jest ten kawałek na prawo i -
widać ten znak stopu choć domyślnie jest to kolor czarny.
Ale kiedy myszy nad nim, to mówi: "Nie zatrzymaj na wyjątki.
Kliknij na pauzę wszystkie wyjątki. "
I po kliknięciu ponownie, okazuje niebiesko.
I teraz za każdym razem, Błąd jest generowany
w kodzie JavaScript, to będzie zatrzymać w miejscu i pozwala
aby ocenić, co się dzieje.
Tak - I to jest naprawdę przydatne Koncepcja ma się zwrócić uwagę.
A następnie po kliknięciu ponownie, okazuje fioletowy
i to normalnie co trzymam go w.
To tylko łamie kod gdy istnieje wyjątek
że nie został złapany.
Tak wiele razy w jQuery dla przykład, że należy próbować połowów
celu sprawdzenia, czy nie przeglądarki ma jakieś zdolności
i stamtąd kontynuować.
Jest to tylko wtedy, gdy nie ma błędu
, która nie została złapany w połowu try.
Więc spróbujmy i przedkłada Nazwa, która jest pusta.
Więc widzę, że Kod jest teraz zatrzymany
w metodzie updateName i mogę myszkę nazw
i zobaczyć, że jest pusty, aby puste.
Jest to równe puste.
Więc jeśli nie nazwać rzucić nowe błąd i teraz mogę cofnąć
poprzez funkcję Kolumna i powiedzieć: "OK,
Jak to się stało z ", a zobaczyć, co wartość klienta jest.
Więc ma metody askForName,
setDisplayName początek i updateName.
I to jest właśnie bardzo przydatne sposób można zobaczyć, mieć wszystko
zmienne, które są dostępne w tym zakresie, jak również
jako zmiennych zamknięcia, więc wszystko, co jest zamknięte
nad tą funkcją.
I tak widzę, że - , co jest wartością klienta
i jaka jest wartość tego jest.
Więc to dlatego, że jesteśmy w jQuery jest równa
do bieżącego elementu DOM.
Ale to jest naprawdę przydatne do debugowania
złamać na błędy jak ten.
Inną cechą Inspektor jest chrom
że w każdej chwili można kliknij na różnych liniach
w rzędzie i to będzie przerwa w miejscach
gdzie masz ustawić punkty przerwania oni dalej.
Więc jeśli kliknij, linia zmieni kolor na niebieski.
Więc pozwól mi kontynuować wykonanie tutaj, OK, to złamał.
A teraz ustawić nazwę Alice i uderzył Zatwierdź.
Więc teraz widzę, nawet zanim dostał się do punktu
aktualizowania wszystko, to teraz zatrzymał tutaj tak widzę
że moja nazwa ta jest Alice a następnie można kontynuować -
pozwól mi odświeżyć stronę.
Dobrze, więc teraz, że jest to zaczynając od początku jeszcze raz,
ona zatrzymana w tym linia i widzę
nazwa ta jest obecnie niezdefiniowane.
askForName które to funkcjonować jest jest tak, że jest często użyteczne
jeśli masz funkcje, które są pochodzących z różnych plików
lub w różne miejsca Kod można zobaczyć, gdzie to jest,
a następnie przejść do tego, będzie ją podświetlić.
Tak dobrze, aby w zwyczaju korzystania z narzędzia do debugowania
, które są nie tylko pocieszyć dziennik kropka.
OK, więc rzućmy patrzeć na drugiego przykładu
co sprawia, że ​​większe wykorzystanie prototypy, jak ja wspomniałem.
Tak więc w tym przykładzie,
tworzymy nowy Funkcja o nazwie CS
i to jest aktywowane tak standardowa konwencja
w JavaScript jest, jeśli Funkcja ma być stosowany
jako konstruktora, a nie
po prostu normalny funkcji, można wykorzystać go.
Mam więc i ten kapitał CS trwa zmienną CourseID
i courseTitle które Ustawić do tego CourseID,
to courseTitle w konstruktorze.
I wtedy również ustawić studentów i zajęcia jak puste tablice.
Więc powód, że -
OK, prototyp Następnie zdefiniowano właściwości
tu z - tak szablon to tylko prosty podkreślenia
szablon, szablon podkreślenia jest sposób, że można -
podobnego do szablonu Dawid wspomniał
na serwerze, można wystarczy napisać skrypt tag
co nie jest JavaScript skrypt ale tekst HTML
i to, co robię z jQuery jest -
nie trzymać je otwarte, tak, tam idziemy.
Z jQuery, to coraz Wartość tego szablonu HTML
a następnie uruchomić go przez podkreślenia bibliotek użytkowych
system szablonów.
Więc dokumentacja za to jest tu na dole
pod szablon użytkowego
ale w zasadzie można przeczytać Trochę więcej na ten temat.
Ale ocenia ten ciąg i zamienia ją w funkcji
które możemy następnie przekazać dane i zadzwoń do dynamicznie.
Kolejne dwie metody mam są addStudent i addLecture.
Są po prostu dodać je do tablice wewnętrzne, że mam ustawione
w konstruktorze i to czyni metodę.
Więc stwórzmy nowy wystąpienie CS nazwie 164
który ma ten kurs numer 164 i tytuł.
A następnie CS50, które ma CS50 i intro CS1
, a następnie dodać kilka wykłady studentów
a następnie wywołać CS50 renderowania.
A jeśli mogę uruchomić kod, więc Robię to z Eval.
Ty naprawdę nie chcesz używać Eval, ale jestem po prostu sortowania
podejmowania wszystkich JavaScript, który jest tutaj
i wykonywanie go w locie.
To świadczy w tym szablon te nowe przypadki
klasy CS posiadających właściwości, więc zaszliśmy
przez i zrobić addLecture i addStudent siebie.
I jak już wspomniałem bo wracam to,
Faktycznie mogę połączyć te addLecture i addStudent rozmowy
i to będzie działać tak samo dobrze.
Innych funkcji w JavaScript jest to bardziej przydatne
po stronie serwera, gdzie naprawdę w danej chwili
jeśli aplikacja pobiera większy nie wiem gdzie jesteś
i trudniej jest ustawić te indywidualne wartości graniczne
że wymienione w Inspektor Chrome
używać słowa kluczowego debugger.
Więc to jest tylko D-E-B-U-G-G-E-R.
I kiedy można umieścić debuggera słów kluczowych w kodzie
i masz - tam idziemy, dwa Gs.
Kiedy można umieścić debuggera słów kluczowych w kodzie
i używasz debugera
takich jak Chrome Inspektor tutaj
lub Chrome po stronie serwera Inspektor, mówi JavaScript
aby zatrzymać wykonywanie na tej linii kodu, a następnie pozwala
aby przejść przez resztę z realizacji kodów.
Więc jeśli kliknij kod run tu, to teraz zatrzymanie
na tej linii debuggera i mogę zobacz OK, tu jest wartość CS50
i to ma oczywiście tytuł, oczywiście ID,
Dostaje on nie wykłady, ma uczniów.
A następnie można przejść przez Cały addLecture,
Widzę to pchanie na tych wykładach,
myszkę, że "Hello World".
I może rzeczywiście w Konsola to zrobić tak to jest ustawione
do bieżącego obiektu że jesteś w.
Wykład ten jest "Hello World".
I zachować Stepping przez tyle, ile chcę.
Jeśli nie chcesz, aby zwiększyć
do wywołania funkcji, bo Wiem, co to się dzieje
zrobić wchodząc addLecture, Przycisk ten nie jest tu
który mówi, "na następny krok Wywołanie funkcji ", a więc można go
do tego stopnia, że ​​jestem być może były zastanawiasz się o coś.
Jak na przykład 164 renderowania.
Więc w tym momencie, to będą świadczone.
Widzę ten szablon jest skompilowany szablon.
Widzę w tym momencie powinien mieć dwóch studentów
oraz dwa wykłady.
I jest jeszcze prototypem Łańcuch, który miałem na myśli.
Tak, że jest jedna domyślna wraz z tylko obiekt
w JavaScript w ogóle,
chodzi z dwoma ciąg wartość konstruktora.
A następnie te, które Dodałem od siebie
z addLecture, addStudent i właściwości
, które są unikalne dla tego instancja klasy
jak została wywołana z nowego hasła.
Więc zróbmy tylko jeden Więcej na ten przykład
a następnie będziemy krok do niektórych więcej ciekawych rzeczy
po stronie serwera.
Więc śmiało i otwarcie Ten ostatni przykład jest -
Zobaczmy, gdzie jest kod?
Nie wiem, gdzie to poszło.
OK, dobrze, możemy po prostu pominąć nad tym kodem, a następnie w rzeczywistości -
och trzymaj się, myślę, że brakowało Arkusz stylów kodu.
OK, więc zróbmy to trochę większy.
W tym przykładzie pokazano mi niewiele więcej od ustawienia
się do łańcucha prototypów,
więc utworzenie dziedziczenie z JavaScript.
Tak więc w tym przypadku mamy Katalog, który będzie
do przypuszczalnie utrzymywać liczne kursy.
I tak ma Katalog an metody addCourse.
Więc sprawdza, czy kurs która jest przekazywana w to wystąpienie
Oczywiście, jak przywoływane z nowego hasła.
Więc jeśli spróbujesz wysłać
w czymś innym, będzie krzyczeć na ciebie.
Metoda render, który będzie czynią każdego z kursów
kompilując swój szablon poniżej.
I mamy kurs których dostęp
w tym przypadku dla klasy bazowej Poszczególne kursy towarowe.
I zamiast ustawiania każdego
kurs z kropką Sposób prototyp kropka
lub personelowi przedłużyć pomocnik w bibliotece podkreślenia
sortować zaproszenia przedłużyć ten prototyp z wszystkich
te właściwości, które ma użyteczne, trochę łatwiejsze do odczytania.
A potem tu robi co jest znane jako ustawienie
się do łańcucha prototypów.
Więc to jest rzeczywiście mało trudne do ludzi w pierwszym
a nawet jeszcze zrobiwszy tego na chwilę, że to rodzaj trudno
owinąć wokół twojej głowie.
Ale nie pozwól, że cię przestraszyć.
Więc jestem utworzenie nowego -
całkowicie nowa klasa obiekt tutaj, CS.
A w konstruktorze,
Mówię, że kurs zastosować tę argumentację.
Więc argumentacja jest specjalnym Wartość Myślę, że można to nazwać
w JavaScript, Hasło, które ma wszystko
tego wszystkiego, co przeszedł wzdłuż to argumenty
że funkcja jest dostępna z argumentów zadzwonić,
z kluczowych argumentów.
Tak dzwonię z Oczywiście dot zastosowania,
to jest obecny kontekst z którym CS jest nazywany.
Kiedy więc wywołać ją nowy to jest - to jest wartość CS.
A ja mówię, że nazywają to Metoda Oczywiście tutaj.
Och przepraszam - nazywamy to Metoda Oczywiście tutaj
ale ustawić wartość tego się niezależnie od wartości
to jest tutaj.
Tak kluczowe zastosowanie pozwala do rodzaju zmiany stanu
z tego co jest, jak jQuery może rozwiązać przełącznika
się to na tobie jako przechodzisz
i zrobić elementów DOM zamiast obiektu jQuery.
Więc teraz mam zamiar ustawić Funkcja tymczasowa
który przechwyci Prototyp oczywiście.
I rodzaju ustaw jego prototyp
a następnie ustawić prototyp od obiektu funkcji CS
do nowej instancji, że.
Więc w zasadzie jestem mówiąc, zamiast -
gdybym tu nie CS Dot Prototyp wynosi nowy kurs.
To byłoby nazywając wszystko
w tej funkcji konstruktora,
, którego nie chcę zawsze chciał.
Więc wszystko to robię rodzaj tworzenia prawie
jak funkcji zastępczej, która będzie miał prototyp courses
go i rodzaj naśladować prototyp -
Oczywiście, ale nie robiąc wszystko w konstruktorze
i ustawiony, że w prototypie.
A ja jestem po prostu dodając, więc dział
w tym przypadku jest komputer Nauka dla obiektu CS.
I wtedy coś w rodzaju Wersja most robić.
To nie działa w IE9.
Więc dlatego chciałem pokazać coś w rodzaju, jak -
co to robi pod wyciągiem.
Ale można go ustawić w ten sam sposób,
gdzie Econ równa funkcji Oczywiście stosuje się do tych argumentów
a następnie powiedzieć prototyp Econ Dot równa obiekt dot CreateCourse
Prototyp kropka.
Więc to tworzy nowy obiekt który jest tylko prototyp
dla biegu, a następnie ustawić dział tam.
Więc teraz chodźmy ustawić debugger tutaj i kliknij na metę.
Nie idziemy.
Więc CS164 widzimy łańcuch prototypów mamy
Własności, które są ustawione w konstruktorze.
Więc wartości te, które zostały ustawione a następnie do łańcucha prototypów
dla obiektu CS to miało Dział Informatyki ustawić.
A następnie na podstawową łańcuch prototypów,
mamy wówczas wszystkie metody i właściwości
, które są unikalne dla Obiekt oczywiście.
A potem mamy obiekty bazy.
Tak, jakby szybkie Przykładem łańcucha prototypów.
I jak widać tutaj, że są dwie wartości na wydziale.
Więc jest dział z informatyki
a następnie wydział nie wymienione, które powiedziałem
jako wartość domyślna tutaj.
Więc łańcuch prototypów jest właściwie tylko pojedynczo
lista linków.
I jak to próbuje znalezienie nieruchomości,
będzie to zaczynają się Wartość najwyższego poziomu.
Więc co jest określone w Funkcja konstruktora
a potem jakby zejść łańcuch prototypów stamtąd.
Tak, ponieważ został znaleziony, więc -
jeśli tu, mówię CS50 kropka Zakład,
będzie to powiedzieć informatykę.
Ale jeśli powiem var -
[Pauza]
Ale jeśli powiem humanistyczne równa się nowy kurs
i wtedy powiem humanistyczne kropka Dział,
Zobaczymy Dział nie wymienione dlatego, że poszedłem do pierwszego -
Mogę patrzeć na prototypie Łańcuch tutaj rzeczywiście.
Więc poszedłem najpierw do kursu obiekt i nic nie widział
na łańcuchu prototypu w ten poziom dla działu
lub wartości towarowych tak następnie przechodzi do następnego poziomu,
Oczywiście i wygląd przekazania tam i znajdzie.
Więc to po prostu coś w rodzaju spada z góry na dół
i to jest rodzaj coś, co jest unikalne
o obsługa JavaScript jest że można zmienić dowolny
z tych wartości w danym czasie.
Więc w konstruktorze lub w indywidualnej metody na obiekcie
jeśli chcę, aby ustawić ten Dział do czegoś nowego,
lub jeśli nawet chcesz ustawić każda z tych funkcji
że są już istnieją
się czegoś nowego, Jestem wolny, aby to zrobić.
Więc teraz mam CS50 kropkę addLecture, wygląda na to, że.
A jeśli chcę, aby ustawić go do CS50 addLecture prostu równa
do pustej funkcji.
To teraz widzę, że to po prostu całkowicie zmienił
których nie jesteś w stanie robić kolejne języki
gdzie masz ostrzejsze Dziedziczenie klasy w oparciu
i wszystko jest rodzaj skonfigurować.
JavaScript jest bardzo, bardzo elastyczne w odniesieniu do tego.
OK, niech wrócić w slajdach.
Więc jeśli na przykład jesteś zawsze jak funkcja
mieć zwłaszcza ta wartość ustawiona dla niego.
Możesz wywołać funkcję dot wiążą
i ustawić wartość co Z tego należy.
Możesz myśleć o tym, jak -
"Staram się myśleć dobry przykład świat, ale prawdziwe ",
jeśli chcesz chronić swój kod
przed kimś potencjalnie nazywając ją z wartością
który nie byłby to.
Jak na przykład AJAX callback jak nadmiar lub błędów.
Te, które nie są zwykle nazywane
z dobrym semantyczna Wartość ta.
I jesteś jak "OK, ja zawsze chcę to być wartość
przedmiotu przedmiotów że pracuję z.
Lub widok, który jestem W mojej pracy z kodem
oznacza to, że Węzeł DOM, można ustawić -
można powiązać z tym kontekst i wtedy, gdy jest ona nazywana później
przez jQuery i nie ma dobra wartość ta będzie ona trzymać
ograniczone do tego, co go.
Potem jest wywołanie funkcji zostały można określić kontekst
oraz określenie zmiennej liczba argumentów.
A potem jest funkcja zastosowania, które można przekazać
W tym kontekście, oraz wówczas tablica
lub obiektów, które argumenty Wspomniałem, jak widać nie.
A argumenty w dowolnej Funkcja, którą nazywamy,
można po prostu wpisać w Słowo "argumenty"
i będzie ona mieć wszystko argumenty.
Ma długość "własność"
który jest jak można argumenty były faktycznie przekazywane do tej metody
ponieważ w JavaScript można sortować zaproszenia
z liczby zmiennych argumentów.
Jest to przydatne do powiedzenie jeśli to miał jeden argument,
następnie podążać tą ścieżką kodu.
Gdyby miał dwa, to polubisz chcą podążać inną drogą.
To pozwala mieć naprawdę API dla swoich dynamicznych metod.
Można myśleć że z jQuery
jak wtedy, gdy masz Dolar kropki lub wiążą.
I jakby nie różne rzeczy
czy można umieścić jedną Argument lub dwa lub trzy
lub uruchom go z funkcji.
Jest to za pomocą argumentów właściwość
i argumenty Długość w wielu przypadkach
mieć tę magię Funkcjonalność zdarzyć.
Rzeczy nie można zrobić z argumentów jest używać go tylko
domyślnie jako tablicę.
Więc można powiedzieć, argumenty trzy i ustawić ją na coś
jak można za pomocą Przypisanie tablicy.
Możesz użyć - wiele metod podkreślenia
zarówno dla zbiorów lub do pracy z tablicami,
można przekazać w argumentach i będzie to realizować
że jest to argumenty obiekt i sortowania
z dbać o to za Ciebie.
Ale jeśli chcesz używać Argumenty, które są przekazywane
przez funkcję jako tablicy
można użyć podkreślenia dot dwa tablicę.
Jednym z wielu funkcji użytkowych
, które są zrobione w celu podkreślenia.