>> Dobre, tak dnes, Budem hovoriť
o JavaScriptu a ako je to odlišný od iných jazykov
že by ste mohli byť mával rád PHP.
Takže v poslednej prednáške na Pondelok, hovorili sme trochu
o tom, čo je to podobné, čo je oboznámení medzi JavaScript
a PHP alebo Python alebo Ruby alebo C, alebo iné jazyky
že ste už poznajú.
Ale JavaScript v skutočnosti má naozaj jedinečný vziať
na objektový model, ktorý umožňuje tak nejako úplne iný
ako väčšina jazykov, ktoré budete zaoberať.
Takže funkcie sú akýmsi
z nedocenený koncepcie v JavaScriptu.
Oni sú tak silnejšie ako ktoré sú v iných jazykoch
pretože môžu v - z jedného dôvodu,
oni sú schopní byť nastaviť ako hodnoty.
Takže tu máme var x sa rovná funkciu
a je to prvá trieda hodnoty, ktoré môžu byť odovzdané
asi ako argument.
Takže nemusíte sa Prehlasujem, funkcia x
a stačí použiť x v tomto rozsahu.
Môžete odovzdať hodnotu x kdekoľvek po celej, viete,
ako argument do ďalšie funkcie
kde si môžete modul export ako Dávid je uvedené v uzle.
Takže ďalší bod je
, Že funkcia je objekt v JavaScriptu.
Takže môžete skutočne nastaviť vlastnosti ako hodnoty
na funkciu a len liečiť je rád, že je to objekt.
Takže keď budete pracovať s jQuery, viete, že dolár
a potom si prejsť volič do neho
a vyvolať ako funkcie.
Ale potom tiež sa dolár dot AJAX.
A to nie je druh zmysel, ak si myslíte,
z funkcie, rovnako ako je niečo, čo môžete vyvolať
alebo volajte.
JavaScript Ale umožňuje nastaviť vlastnosti funkcií
ako statické vlastnosti len s x bodka someProp
ako som už uviedol tam.
Ďalším bodom, ktorý sme ísť do trochu viac
do hĺbky, je skutočnosť, že Funkcie môžu byť liečené
ako triedy v JavaScripte.
Takže tam je koncept tohto nového prevádzkovateľa
ktorý vytvorí novú inštanciu funkcie spolu s druhom
z ako trieda-ako tela ktorý je dodávaný spolu s ním
a budeme pokračovať do toho trochu viac,
je to len prototyp.
A to je to, čo je značky JavaScript veľmi unikátny v porovnaní
do iných jazykov ktoré sú založené na triede,
JavaScript je prototyp založený.
A potom už len na v spodnej časti,
Funkcia môže byť len tzv jasne, ako sme zvyknutí.
Takže to nie je nič nové.
Ďalšia vec, ktorá je jedinečná je
že polia sú v skutočnosti predmety.
Sú to nepáči, že sú v PHP
kde stačí vytvoriť nové pole.
To je vlastne skratka pre povesť nové pole.
A pole je v skutočnosti podtrieda objektu.
Tak to je niečo, iný a ja pôjdem
do trochu viac detail na to.
A možnosti ladenia
s JavaScript sú naozaj neporovnateľné čo som videl.
To je screenshot z Chrome Inspector
ktoré budeme používať vo zvyšku
prezentácie dnes.
A aby si to, stačí prejsť na súbor vývojárske nástroje
a otvorený Chrome Inspector alebo môžete kliknúť pravým tlačidlom
a kliknite na tlačidlo Zobraziť prvku Aj myslím, že je na HTML stránke
alebo si myslím, že je to príkaz možnosť J sa otvorí to.
Ale pôjdeme do toho a vy môže skutočne nastaviť zarážky
ako vediete cez kód JavaScript a triedenie
z vyhodnotiť, čo miestne premenné, akú hodnotu
je to, a to je to oveľa jednoduchšie ladenie kódu.
A nie - to nie je obmedzená na strane prehliadača kódu
ale môžete vlastne spustiť inštanciu
tohto Chrome Inspector pre servisného kódu na strane
čo je naozaj čistý, pretože vám môžete krokovať riadok po riadku
ako požiadavka, ktorý príde do vášho servera a vidieť, čo sa deje
a hrať sa s premennými v konzole tu dole.
Takže, ako som už spomenul, JavaScript je jazyk prototyp na báze
čo znamená, že je súbor z východiskových hodnôt, ktoré sú nejako
skrytých pre každú funkciu
v objekte bodkou Vlastnosť prototype.
Takže je to trochu hash len iné štandardné hodnoty
že pri vyvolaní fungovať s novým kľúčové slovo,
ktoré sú stanovené predvolené ako funkcia
ktoré sú k dispozícii na inštanciu.
Takže to vlastne je naozaj efektívne pre -
je to efektívny spôsob, ako vytváranie objektov pamäť múdry
pretože JavaScript runtime má iba sledovať
prototypu objektu.
Je to trochu pripomína ako
keď cretae nový inštancie triedy.
A môžete tiež napodobňovať dedičnosť ako je známa
vo svojej triede-založené jazyky kde budete musieť nejako
ako sa to rozširuje, aby rozširuje, ktoré môžete napodobniť
že v JavaScriptu tým, čo sa nazýva
Reťazec prototypu.
A uvidíme príklady o tom.
Takže ak vaša - jQuery pluginy vlastne odporúčajú jQuery
Autori používať dolár bodku fn pridať funkcie
do knižnice jQuery.
A my vlastne bude skok na - Tak, na tejto stránke,
máme dolár - Aj vrátane jQuery.
A ak si dolár dot v konzole
ktoré som sa zmienil, prináša môžete si pomocou príkazu shift J
alebo len tak na Zobraziť, Developer, Nástroje pre vývojárov
a ísť na kartu Zdroje.
[Nepočuteľný Poznámka]
Iste. Takže keď som začal zadajte premennú,
je to auto-dokončenie pre mňa čo je k dispozícii tu.
Tak som napísal v dolár a môžem pozri Myslím, že Chrome má niektoré
vstavaný dolára, dolár a dolár x.
Takže teraz chcem len dolár a dal som do bodkou.
A potom mi to ukazuje, všetky vlastnosti
ktoré sú k dispozícii na objekt jQuery.
Ale keď to urobím dolár dot prototyp,
Teraz vidím všetky metódy že som zvyknutý na používanie
keď mám dolára, volič a potom som reťaz off, ktoré sa,
Viete, pridať triedu alebo pripojiť alebo rozostrenie alebo niektorý z podobne.
Tí, ktorí sú v skutočnosti na prototype
ktorý pod kapotou jQuery vytvorí novú inštanciu seba samého
a tak nejako sa skrýva všetko tieto údaje od vás.
Takže bod, ktorý som takže staré sem
s funkciou, ktoré vlastne skryť prototyp od vás
a len alias nej k doláru dot fn.
Takže väčšina ľudí v skutočnosti si neuvedomujú,
, Že je prototyp pod that 's kapucne -
že môžete kliknúť na a pridať ďalšie funkcie
na každú inštanciu jQuery ak by ste chceli.
Takže "nový" subjekt naozaj trochu ťažké
pochopiť na prvý pohľad.
Pri volaní funkcie s "novou",
to je úplne iná spôsob volania funkcie
ako keby ste práve volal to jasne.
Takže "nový" operátor vytvára to, čo sa nazýva nová inštancia
objektu alebo nový inštancie, môže si myslíte,
objektu ako triedy.
A keď sa to stane, hodnota z toho, ktoré môžu byť oboznámení
sa z jQuery, sa nejako nastaviť tento
na to, čo je vhodné v tej dobe.
Zvyčajne nastavte ju na Aktuálne DOM uzol, ktorý ste
na čo ste prechádzajú ako každý, alebo niečo také.
Oni - Táto hodnota má byť hodnota inštancie
ktoré ste vytvorili pomocou "nové", ktorý zahŕňa všetko
na reťazci prototypu a všetky metód, ktoré by ste nájsť
ako vlastnosti prototypu.
Takže záleží na tom, ako funkcia sa nazýva,
akú hodnotu je.
A je to naozaj mätúce ak ste JavaScriptu nové.
Ale každá funkcia, ktorá sa nazýva má - má na tejto hodnote.
Takže aj keď ste nevytvorili nové inštancie niečoho,
Predpokladá sa, že toto je byť globálna.
Alebo môžete zavolať funkciu metódou volanie
kde metódu aplikovať v JavaScriptu.
Môžete si funkcie a určiť, čo by to malo byť.
Takže si môžete robiť to dynamický, ktorý je naozaj silný
ale tiež vám umožní urobiť veci, ktoré môžu byť zavádzajúce
a mätúce ďalšie vývojári
v prípade, že nie ste použiť k tomu.
A jQuery by som tvrdiť, je ešte viac mätúce
tým, že je vhodné a nastavenie
na aktuálne DOM uzol.
Ale jednoduché pravidlo na zapamätanie akú hodnotu je
keď hľadáte
na funkčné volanie je čo zostalo z bodky.
Takže ak máte objekt
a je to niečo, bodka niečo, čo je funkcia
že voláte potom Prvá hodnota je to, čo hodnota
to je.
Takže tu je príklad kódu
kde som vytvoriť nový objekt doslovný
čo je práve predmetom vytvorené pomocou zložených zátvoriek
a ja som nastaviť meno Bob
a potom som si sayName Metóda, ktorú tu, ktoré -
takže v tomto sayName keby som x dot sayName,
hodnota je rovná k x, pretože ľavá
bodky je x. Takže ak Nazval som to x dot sayName,
to by som Hello Bob.
A potom ďalší príklad
kde som vlastne priradenie x bodka sayName, funkcie
premenné Y, ktorý, ako som sa zmienil,
v JavaScriptu vás môžete priradiť funkcie
premenných, kedykoľvek budete chcieť, je to naozaj flexibilný, že spôsob,
ale teraz, keď som volať Y, že stratil kontext x.
Takže to je teraz globálne alebo ak ste v prísnom režime,
Verím, že je to null alebo nedefinované.
Ale - Takže Y nie je to, čo ste čaká tu, ak hľadáte
na x a budete volať sayName,
ste očakával tento názov má byť Bob.
Ale ak si to dal dole objektu a volal, že
sama o sebe, to je teraz globálne.
A to je to, čo som sa zmienil keď vidíte dolár dot to,
často si nemyslím, že čo sa vlastne deje.
Ale jQuery druh má svoje vlastný jazyk domény špecifické pre
pre prácu s týmto a že to nie je to, čo ste zvyknutí
v JavaScriptu.
A ja som poukázať na to pretože je to naozaj dôležité,
pre písanie dobre štruktúrovaných objektovo orientovaný kód
vo JavaScript, aby naozaj dobré porozumenie a pochopenie
o tom, ako to funguje a ako Objektový model práce
a ako sa nový prevádzkovateľ funguje.
V opačnom prípade môžete skončiť s jQuery špagety
kde všetko je trochu z všade
a obchoduje iba s DOM.
Ak môžete skutočne napísať kódu JavaScript
v prehľadnejším spôsobom, to robí to oveľa jednoduchšie
pracovať, triediť z oddeliť obavy
o rokovania s aktualizácie DOM a riešenia
s aktuálnym logikou a kód.
Takže poďme sa pozrieť na Niekoľko príkladov okolo, že.
Tak som si niekoľko príkladov tu.
Tak to je len jednoduchý príklad využitie objektu JavaScript
a pridanie niekoľkých funkcií k nemu a potom vytvoriť akýsi
o ako miniatúrne aplikácie.
Takže je to veľmi jednoduché skutočnosti.
Jediná vec, ktorá to robí, je na prvý pohľad, že vyzve svoje meno.
Tak som si povedal Tim a potom Môžete zmeniť svoje meno s Bobom.
A to je všetko aplikácie robí.
Ale to, čo by som rád upozornil sa, ako to robí.
Tak som si to meno generátor objekt, ktorý má spôsob štartovanie
ktorý žiada užívateľov ich mená
jednoduchým volaním tejto askForName
ktorý tu dole robí príkazového riadku
pokiaľ nebol priradený názov potom sa spýta na to znova
volaním tejto askForName.
A potom, akonáhle sa dostane meno, volá tento názov aktualizácie.
Tak to potom nastaví meno užívateľa v tagu h1.
A v prípade, že názov nie nastavenie, vyvolá chybu.
[Nepočuteľný Poznámka]
Iste. Tak to stanovuje meno užívateľa v h1 tagu
volaním setDisplayName , Ktoré stanovuje HTML
v názve kontajnera JS a Som prefixu všetky moje HTML
s JS selektory len preto, je to dobrý zvyk sa dostať
do len preto, aby to nie je tak mätúce
pri použití selektory, ako je ID alebo tried
ako pre štýl a logiku
v JavaScriptu predné end aplikácie.
Vzhľadom k tomu, ak máte iný skupiny ľudí pracujúcich
na kódové základne a majú voliča tam
že projektant rozhodne zmeniť, pretože To je -
nevyzerá skvele, a tak chcú dať do novej triedy a vziať
z vás a vy ste sa spoliehať na neho pre účely JavaScript,
potom váš kód prestávky.
Je to dobré pre predponu a triediť
z názvov ako takmer JavaScript súvisiace triedy
alebo atribúty prefix JS.
Tak to je celkom jednoduché a môžete vidieť
Vo všetkých týchto prípadoch som si volanie vrátiť to na konci.
Tak to je dobrý zvyk sa dostať do,
aby vám to platí návratová hodnota.
V askForName nie som pretože to dáva zmysel
že by ste si meno späť.
Ale čo, ktorý umožňuje aby si potom
ak sa vrátite túto aktualizáciu meno, je to vracia hodnotu
z setDisplayName ktorý je vracia hodnotu tohto.
A ktorý umožňuje triediť reťaze, ako ste zvyknutí
v jQuery vrátením hodnota tohto zakaždým.
To sa týka existujúce objekty
takže sa dalo nazvať tento bod askForName bodka setDisplayName
a to by držať Hodnota tejto a umožňujú vám
mať krásny reťaz tam.
A potom - aby v Tento druhý príklad.
[Pause]
Dobrá.
OK. Tak poďme do toho a otvoriť konzolu
a ísť do môjho záložke Sources.
Budeme pop na to v skutočnosti.
Takže vývojárov Chrome nástroje, ktoré som spomenul,
je to kus na pravej a -
vidíte túto stopku aj keď v predvolenom nastavení, je to čierna.
Ale keď sa myš cez to, že hovorí: "nerobte dlhšiu pauzu na výnimky.
Kliknite na pauzu na všetky výnimky. "
A keď na neho kliknete Opäť platí, že zmodrie.
A teraz kedykoľvek, že tam je chyba vyvolaná
v kóde JavaScript, bude to zastaviť na mieste a umožní vám
zhodnotiť, čo sa deje.
Takže - A to je naozaj užitočné koncept je asi poukázať.
A potom, ak kliknete na tlačidlo Znovu sa ukazuje, fialová
a to je zvyčajne to, čo som si to dovnútra
To len zlomí kód keď tam je výnimka
ktorý nebol chytený.
Takže mnohokrát v jQuery pre inštancie, keď sa snažia úlovky
otestovať, či prehliadač alebo nie má nejaké schopnosti
a pokračujte odtiaľ.
To je len v prípade, tam je chyba
, Ktorá nebola chytený v try úlovku.
Takže poďme skúsiť a predložiť meno, ktoré je prázdne.
Tak vidím, že Kód je teraz zastavený
na spôsobe updateName a môžem myšou mená
a vidieť, že je prázdna, aby prázdne.
Tam je rovné prázdne.
Takže, ak nie pomenovať hodiť nový chyba, a teraz môžem krok späť
prostredníctvom funkcie stĺp a povedal: "OK,
kde sa to vzalo, "a vidieť, čo je hodnota klienta je.
Tak to má metódu askForName,
setDisplayName začiatok a updateName.
A to je len naozaj užitočné spôsob, ako môžete vidieť, mať všetky
premenné, ktoré sú k dispozícii v tom rozsahu, ako
ako premenné uzavretie, takže všetko, čo je zatvorená
nad touto funkciou.
A tak vidím, že - čo hodnota klienta je
a aké hodnoty to je.
Takže to, pretože sme v jQuery je rovná
na aktuálne DOM prvku.
Ale je to naozaj užitočné pre ladenie kódu
rozdeliť na chyby, ako je tento.
Ďalším rysom Chrome Inspector je
že v každom okamihu môžete kliknite na jednotlivé riadky
v rade, a to bude prerušenia v miestach,
kde ste nastaviť zarážky oni sú odvolával sa na ako.
Takže keď som kliknite na tlačidlo, riadok zmodrie.
Takže dovoľte mi, aby som aj naďalej prevedenie tu, OK, to zlomil.
A teraz poďme nastaviť meno Alicu a stlačte Odoslať.
Takže teraz vidím aj pred tým, než sa dostal do bodu,
aktualizácie všetko, je to teraz tu sa zastavil, aby som mohol vidieť
že moje toto meno je Alice a potom môžem pokračovať -
dovoľte mi, aby som znovu načítať stránku.
Dobre, tak teraz, keď je to Znovu začína na začiatku,
že sa zastavil na to linka a vidím
že meno je v súčasnej dobe definovaný.
askForName je, ktoré ju fungovať je, takže je často užitočné
Ak máte funkcie, ktoré sú pochádzajúce z rôznych súborov
alebo na rôznych miestach vo kód, môžete vidieť, kde to je,
a potom skočiť na to, to bude zvýraznite ju.
Tak dobré sa dostať vo zvyku použitie ladiacich nástrojov
ktoré nie sú len konzoly dot protokol.
OK, takže poďme pozrite sa na druhom príklade
ktorý je viac využívať prototypy, ako som sa zmieňoval sa.
Takže v tomto prípade,
budeme vytvárať nový Funkcia s názvom SK
a to je kapitálovo takže konvencie štandardné
v JavaScripte, ak je funkcia má byť použitý
ako konštruktér, na rozdiel od
len normálne funkcie, môžete ju využiť.
Takže mám kapitálové SK a to má variabilný courseId
a courseTitle ktoré Som sa do tohto courseId,
tento courseTitle v konstruktoru.
A potom som sa tiež nastaviť študentmi a prednášky ako prázdne pole.
Takže dôvod, že ste -
OK, takže prototyp vlastnosti potom boli definované
tu sa - tak šablóna je len jednoduchý podčiarkovník
šablóny, šablóny podčiarkovník je spôsob, ako môžete -
podobne ako šablóny že David sa zmienil
na serveri, môžete stačí napísať tag script
ktorý nie je JavaScript skript, ale text HTML
a čo robím s jQuery je -
to nevedie týchto otvorené, jo, ideme na to.
S jQuery, je to čím ďalej HTML hodnota tejto šablóne
a potom to beží cez zdôrazňujú úžitkové knižnice
šablóna motora.
Takže dokumentácie pre ktoré je tu
podľa úžitkového vzoru
ale v podstate si môžete prečítať trochu viac o tom.
Ale to vyhodnotí tento reťazec a zmení ho do funkcie
ktoré potom môžu odovzdať dáta do a volať dynamicky.
Ďalšie dve metódy, ktoré mám sú addStudent a addLecture.
To stačí pridať ich do vnútorné pole, ktoré som nastaviť
v konstruktoru a potom spôsob vykreslenia.
Takže, poďme vytvoriť novú inštancie SK s názvom 164
ktoré má tento kurz číslo 164 a názov.
A potom CS50, ktorý má CS50 a úvod do CS1
a potom pridať niekoľko prednáša študentom
a potom volať CS50 činí.
A keď som spustiť kód, takže Robím, že sa Eval.
Nikdy naozaj chcete použiť Eval, ale ja som tak nejako
zo s ohľadom na všetky JavaScript, ktorý je tu
a spustením behu.
To predstavuje v tomto šablóna tieto nové prípady
triedy, ktoré majú CS vlastnosti, takže sme šli
vďaka a urobil addLecture a addStudent každému.
A ako som sa zmienil pretože Vraciam to,
Ja si skutočne reťaz tieto addLecture a addStudent volanie
a že to bude fungovať rovnako dobre.
Ďalšie funkcie v JavaScriptu , Že je ešte užitočnejšie
na strane servera, kde naozaj v danom čase
ak vaša aplikácia dostane väčšiu neviem, kde ste
a je to ťažšie pre nastavenie Tieto jednotlivé zarážky
že som sa zmienil v Inšpektor Chrome je
používať debugger kľúčové slovo.
Takže je to len D-E-B-U-G-G-E-R.
A keď dáte debugger kľúčové slovo v kóde
a máte - tam ideme, dva Gs.
Keď dáte ladiaci program kľúčové slovo v kóde
a vediete debugger
ako je Chrome Inšpektor tu
alebo na strane servera Chrome Inšpektor, to vám povie JavaScript
zastaviť popravu na tomto riadku kódu a umožňuje vám
krokovať ostatné o vykonaní kódov.
Takže keď som kliknite na príkaz Spustiť kód tu, je to teraz zastaviť
v tomto debugger riadku a môžem pozri OK, tu je hodnota CS50
a to má samozrejme názov, samozrejme ID,
to má žiadne prednášky, žiadne študenti.
A potom som si krokovať Celá addLecture,
Vidím, že to tlačí Na týchto prednáškach,
myšou cez to, že "Hello World".
Môžem skutočne konzola to tak je táto voľba nastavená
na aktuálny objekt že ste palcov
Táto prednáška je "Hello World".
A majte krokovanie cez čo chcem.
Ak nechcem krokom
na príčiny volanie funkcie 'A Viem, čo to ide
k tomu ísť do addLecture, tam je to tlačidlo tady
ktorý hovorí, že "krok po ďalšej volanie funkcie, "a tak môžem ísť
na mieste bolo, že som možno premýšľal o niečom.
Rovnako ako napríklad 164 činí.
Takže v tejto chvíli, je to bude vykreslený.
Vidím túto šablónu je zostavený šablóna.
Vidím v tomto bode Aj by mala mať dvoch študentov
a dve prednášky.
A potom je tu prototyp reťaz, ktorý som mal na mysli.
Takže východiskové ten, ktorý je dodávaný spolu s len objektu
v JavaScriptu všeobecne,
prichádza s dvoma reťazcami hodnota konstruktoru.
A potom tie, ktoré Pridal som na seba
s addLecture, addStudent a vlastnosti
ktoré sú jedinečné pre tento inštancie triedy
ako to bolo vyvolané pomocou kľúčového slova new.
Takže poďme robiť len jeden viac príkladov na túto tému
a potom budeme krok k niektorým ďalšie zaujímavé veci
na strane servera.
Tak poďme do toho a otvorte Tento posledný príklad, ktorý je -
poďme sa pozrieť, kde je kód?
Ja neviem, kde to šlo.
OK, dobre, môžeme preskočiť cez tento kód potom vlastne -
oh vydrž, myslím, že som vynechal štýlov pre kód.
OK, takže poďme sa to trochu väčšie.
V tomto príklade som ukazovať trochu viac na nastavenie
up reťazci prototypu,
takže nastavenie dedičstva s JavaScript.
Takže v tomto prípade máme tovar, ktorý sa deje
sa pravdepodobne udržiavať viac kurzov.
A tak tovar má an metódy addCourse.
Tak to skontroluje, či kurz ktorý je odovzdaný je inštancia
Samozrejme, ako uplatniť pomocou kľúčového slova new.
Takže ak sa pokúsite a odoslať
v niečo iné, že bude kričať na vás.
Metóda render, ktorý bude robí každý z kurzov
o zostavovanie šablóny nižšie.
A máme kurz ktorý prístup
V tomto prípade je základná trieda pre jednotlivých oddelení kurzy.
A namiesto toho, aby nastavenie každého
z kurzu bodky Metóda prototyp bodka
alebo majetku pomocou rozšírenia pomocník v knižnici podčiarknutia
triediť hovoru rozšíriť Tento prototyp sa všetkými
z týchto vlastností, ktoré sú užitočné, trochu čitateľnejší.
A potom tu robí čo je známe ako nastavenie
up reťazci prototypu.
Takže je to vlastne trochu zložité pre ľudí na prvý pohľad
a to aj napriek tomu, že urobil to na chvíľu, je to trochu ťažké
zabaliť hlavu okolo.
Ale nenechajte sa zastrašiť.
Takže som nastavenie nové -
úplne nová trieda objekt tu, CS.
A v konstruktoru,
Hovorím kurz platí tento argumentov.
Takže argumenty je zvláštne hodnota Myslím, že by ste to mohol nazvať
v JavaScripte, kľúčové slovo, ktoré má všetky
zo všetkého, čo je odovzdaný spolu so argumenty
ktoré funkcie sú k dispozícii s argumenty hovoria,
s kľúčovým slovom argumenty.
Takže ako volám sa samozrejme dot platí,
to je aktuálny kontext s ktorými CS je volaná.
Takže keď som to tiež vyvolať nové to je - to je hodnota CS.
A ja hovorím tomuhle Samozrejme metóda tu sa.
Oh prepáč - volať toto Metóda Samozrejme tu
ale nastaviť hodnotu tohto sa bez ohľadu na hodnotu
to je tu.
Takže slovo platí umožňuje vám nejako zmeniť stav
z toho, ktorý je, ako jQuery je povolené triediť spínača
mimo to na vás ako idete cez
a urobiť prvkov DOM namiesto objektu jQuery.
Takže teraz idem do nastavenia dočasná funkcia
ktorá sa chytiť Prototyp kurzu.
A nejako nastaviť so svojim prototypom
a potom nastavte prototyp na funkciu objektu CS
do novej inštancie, ktoré.
Takže v podstate som namiesto toho povedal -
keď som tu robil sk dot Prototyp sa rovná nový kurz.
Potom by bolo volanie všetko
v tejto funkcii konstruktoru,
ktoré som nechcel nutne chcel.
Takže všetko, čo robím, je druh vytvára takmer
ako náhradné funkciu, ktorá bude mať prototyp kurzy
na neho a trochu napodobňovať prototyp -
Samozrejme, ale bez toho, všetko v konstruktoru
a nastaviť, aby na prototypu.
A potom som len pridanie takže oddelenie
v tomto prípade je počítač Science pre objekt CS.
A potom som si akúsi Most verzie robiť, že.
To nefunguje v IE9.
Takže to je dôvod, prečo som chcel, ukázať akúsi ako -
čo to robí pod kapotou.
Ale môžete ho nastaviť sa rovnakým spôsobom
kde Econ rovná funkciu Samozrejme platí tieto argumenty
a potom hovoria, Econ DOT prototyp rovná objekt dot CreateCourse
dot prototyp.
Tak to vytvorí nový objekt ktorý je len prototyp
na kurze a potom nastavte oddelenie tam.
Takže teraz poďme nastaviť debugger tu a kliknite na úteku.
Tam ideme.
Takže CS164 môžeme vidieť Reťazec prototypu máme
vlastnosti, ktoré sú nastavte v konstruktoru.
Takže hodnoty nich, ktoré boli stanovené a potom na reťazci prototypu
pre objekt SK to malo Oddelenie informatiky nastaviť.
A potom na základné Reťazec prototypu,
sme sa potom všetci metódy a vlastnosti
ktoré sú jedinečné pre objekt kurzu.
A potom máme Základné objekty.
Takže to nejako rýchlo Príklad reťazca prototypu.
A ako môžete vidieť tu, tu sú dve hodnoty na oddelenia.
Takže tam je oddelenie informatiky
a potom oddelenie nie je uvedený a ktorý mi povedal,
ako predvolenú hodnotu tu.
Takže prototypový reťazec je vlastne len jednotlivo
Zoznam link.
A ako sa snaží nájsť nehnuteľnosť,
to bude začínať na najvyššiu hodnotu na úrovni.
Takže to, čo je definované v Funkcie konstruktoru
a potom sa nejako ísť dole Reťazec prototypu odtiaľ.
Tak preto, že našiel, tak -
ak tu, hovorím CS50 bodka oddelenia,
to poviem Computer Science.
Ale keď poviem, var -
[Pause]
Ale keď poviem, humanitné vedy rovná sa nový kurz
a potom som povedal humanitné vedy dot oddelenia,
Uvidím oddelenie nie je uvedený , Pretože to išlo na prvý -
Môžem sa pozrieť na prototype reťaz tu vlastne.
Tak to išlo prvýkrát do kurzu objektu a videl, že nič
na prototype reťazci na táto úroveň pre oddelenie
alebo hodnoty oddelenia, aby potom to skočí na ďalšiu úroveň,
priebeh a vzhľad odovzdať tam a nájde ju.
Tak to proste niečo ako ide dole z vrcholu dole
a to je druh niečo, čo je jedinečné
o JavaScript je ktoré môžete zmeniť akýkoľvek
z týchto hodnôt na nejaký daný čas.
Takže v konstruktoru alebo v jednotlivé metódy na objekte
keď chcem nastaviť tento Oddelenie pre niečo nové,
alebo keď dokonca chcete nastaviť niektoré z týchto funkcií
ktoré sú už existujú
niečo nové, Som slobodný k tomu, že.
Takže teraz mám CS50 bodku addLecture, vyzerá, že.
A keď chcem nastaviť tak, aby CS50 addLecture len rovná
na prázdne funkcie.
Potom teraz vidím, že je to Len úplne zmenil
ktoré nie ste schopní urobiť ďalšie jazyky
kde budete mať prísnejšie triedy na základe dedičstva
a všetko, čo je nejako nastaviť.
JavaScript je veľmi, veľmi flexibilný s ohľadom na to.
OK, poďme skočiť späť V snímok.
Takže ak napríklad budete by vždy radi funkciu
mať zvláštne táto hodnota nastavená na neho.
Môžete volať funkcie dot bind
a nastaviť, čo hodnota to by malo byť.
Môžete myslieť na to, ako -
"Snažím sa myslieť na dobrý reálny príklad svete, ale ",
Ak chcete chrániť svoj kód
proti niekomu potenciálne volanie s hodnotou
, Že by nemali byť v tomto.
Rovnako ako napríklad AJAX callback ako prebytku alebo chybou.
Tie sú zvyčajne nenazývajú
s dobrým sémantickej hodnota tohto.
A ty si ako: "OK, som vždy chcem to byť hodnota
objektu predmetu že som pracoval.
Alebo pohľad, ktorý som prácu s v mojom kóde
ktorá predstavuje tento DOM uzol, môžete nastaviť -
môžete zviazať kontext tejto a potom, keď sa to volá neskôr
o jQuery a nemá dobré z toho, že budem držať
na to, čo to ohraničené.
Potom je tu volanie funkcie boli môžete určiť kontext
a špecifikovať premenné počet argumentov.
A potom je tu funkcia aplikovať ktoré môžete odovzdať
v kontexte a potom buď pole
alebo argumenty namieta, že Zmienil som sa, ako vidíte tu.
A argumenty v niektorom funkcie, ktoré voláte,
môžete zadať v slovo "argumenty"
a to bude mať všetko argumenty.
Má "dĺžka" majetok
čo je, ako možno argumenty boli vlastne prešiel na týchto metód
pretože v JavaScriptu môžete zotrieďiť hovoru
s variabilnou čísla argumentov.
Je to užitočné pre porekadlo ak to mal jeden argument,
potom nasledovať tento kód cestu.
Ak to malo dve, možno budete Chcete sledovať iný spôsob.
To vám umožní mať skutočne dynamické rozhranie API pre vaše metódy.
Môžete si myslieť že s jQuery
ako keď máte dolár dot alebo bind.
A je to trochu robí rôzne veci
o tom, či si dať jeden argument, alebo dva alebo tri
alebo spustiť s funkciou.
Je to pomocou argumentov vlastnosť
a argumenty dĺžka v mnohých prípadoch
aby toto kúzlo Funkcie sa stalo.
Veci, ktoré nemôžete robiť s argumenty je používať len
V predvolenom nastavení ako pole.
Takže môžete povedať argumenty tri a nastavte ju na niečo
ako by ste mohli používať priradenie poľa.
Môžete použiť - veľa metód podčiarknutie
buď pre zbierok alebo pre prácu s poľami,
môžete odovzdať argumenty a to si uvedomiť,
že je to argumenty predmet a druh
o to postará za vás.
Ale ak chcete používať argumenty, ktoré sú odovzdané
prostredníctvom funkcie ako pole,
môžete použiť podčiarkovník dot dve polia.
Jeden z čísla úžitkových funkcií
že sa stavať do podčiarknuť.