>> Dobře, tak dnes, Budu mluvit
o JavaScriptu a jak je to odlišný od jiných jazyků
že byste mohla být míval rád PHP.
Takže v poslední přednášce na Pondělí, mluvili jsme trochu
o tom, co je to podobné, co je obeznámeni mezi JavaScript
a PHP nebo Python nebo Ruby nebo C, nebo jiné jazyky
že jste již znají.
Ale JavaScript ve skutečnosti má opravdu jedinečný vzít
na objektový model, který umožňuje tak nějak úplně jiný
než většina jazyků, které budete zabývat.
Takže funkce jsou jakýmsi
z nedoceněný koncepce v JavaScriptu.
Oni jsou tak silnější než které jsou v jiných jazycích
protože mohou v - z jednoho důvodu,
oni jsou schopni být nastavit jako hodnoty.
Takže tady máme var x se rovná funkci
a je to první třída hodnoty, které mohou být předány
asi jako argument.
Takže nemusíte se Prohlašuji, funkce x
a stačí použít x v tomto rozsahu.
Můžete předat hodnotu x kdekoli po celé, víte,
jako argument do další funkce
kde si můžete modul export jak David je uvedeno v uzlu.
Takže další bod je
, že funkce je objekt v JavaScriptu.
Takže můžete skutečně nastavit vlastnosti jako hodnoty
na funkci a jen léčit je rád, že je to objekt.
Takže když budete pracovat s jQuery, víte, že dolar
a pak si projít volič do něj
a vyvolat jako funkce.
Ale pak také se dolar dot AJAX.
A to není druh smysl, pokud si myslíte,
z funkce, stejně jako je něco, co můžete vyvolat
nebo volejte.
JavaScript Ale umožňuje nastavit vlastnosti funkcí
jako statické vlastnosti jen s x tečka someProp
jak jsem již uvedl tam.
Dalším bodem, který jsme jít do trochu více
do hloubky, je skutečnost, že Funkce mohou být léčeny
jako třídy v JavaScriptu.
Takže tam je koncept tohoto nového provozovatele
který vytvoří novou instanci funkce spolu s druhem
z jako třída-jako těla který je dodáván spolu s ním
a budeme pokračovat do toho trochu víc,
je to jen prototyp.
A to je to, co je značky JavaScript velmi unikátní v porovnání
do jiných jazyků které jsou založené na třídě,
JavaScript je prototyp založený.
A pak už jen na ve spodní části,
Funkce může být jen tzv. jasně, jak jsme zvyklí.
Takže to není nic nového.
Další věc, která je jedinečná je
že pole jsou ve skutečnosti předměty.
Jsou to nelíbí, že jsou v PHP
kde stačí vytvořit nové pole.
To je vlastně zkratka pro pověst nové pole.
A pole je ve skutečnosti podtřída objektu.
Tak to je něco, jiný a já půjdu
do trochu více detail na to.
A možnosti ladění
s JavaScript jsou opravdu nesrovnatelné co jsem viděl.
To je screenshot z Chrome Inspector
které budeme používat ve zbytku
prezentace dnes.
A aby si to, stačí přejít na soubor vývojářské nástroje
a otevřený Chrome Inspector nebo můžete kliknout pravým tlačítkem
a klepněte na tlačítko Zobrazit prvku I myslím, že je na HTML stránce
nebo si myslím, že je to příkaz možnost J se otevře to.
Ale půjdeme do toho a vy může skutečně nastavit zarážky
jak vedete přes kód JavaScript a třídění
z vyhodnotit, co místní proměnné, jakou hodnotu
je to, a to je to mnohem jednodušší ladění kódu.
A ne - to není omezena na straně prohlížeče kódu
ale můžete vlastně spustit instanci
tohoto Chrome Inspector pro servisního kódu na straně
což je opravdu čistý, protože vám můžete krokovat řádek po řádku
jako požadavek, který přijde do vašeho serveru a vidět, co se děje
a hrát si s proměnnými v konzole zde dole.
Takže, jak jsem již zmínil, JavaScript je jazyk prototyp na bázi
což znamená, že je soubor z výchozích hodnot, které jsou nějak
skrytých pro každou funkci
v objektu tečkou Vlastnost prototype.
Takže je to trochu hash jen odlišné standardní hodnoty
že při vyvolání fungovat s novým klíčové slovo,
které jsou stanoveny výchozí jako funkce
které jsou k dispozici na instanci.
Takže to vlastně je opravdu efektivní pro -
je to efektivní způsob, jak vytváření objektů paměť moudrý
protože JavaScript runtime má pouze sledovat
prototypu objektu.
Je to trochu připomíná jako
když cretae nový instance třídy.
A můžete také napodobovat dědičnost jako je známa
ve své třídě-založené jazyky kde budete muset nějak
jako se to rozšiřuje, aby rozšiřuje, které můžete napodobit
že v JavaScriptu tím, co se nazývá
Řetězec prototypu.
A uvidíme příklady o tom.
Takže pokud vaše - jQuery pluginy vlastně doporučují jQuery
Autoři používat dolar tečku fn přidat funkce
do knihovny jQuery.
A my vlastně bude skok na - Tak, na této stránce,
máme dolar - I včetně jQuery.
A pokud si dolar dot v konzoli
které jsem se zmínil, přináší můžete si pomocí příkazu shift J
nebo jen tak na Zobrazit, Developer, Nástroje pro vývojáře
a jít na kartu Zdroje.
[Neslyšitelný Poznámka]
Jistě. Takže když jsem začal zadejte proměnnou,
je to auto-dokončení pro mě co je k dispozici zde.
Tak jsem napsal v dolar a mohu viz Myslím, že Chrome má některé
vestavěný dolaru, dolar a dolar x.
Takže teď chci jen dolar a dal jsem do tečkou.
A pak mi to ukazuje, všechny vlastnosti
které jsou k dispozici na objekt jQuery.
Ale když to udělám dolar dot prototyp,
Teď vidím všechny metody že jsem zvyklý na používání
když mám dolaru, volič a pak jsem řetěz off, které se,
Víte, přidat třídu nebo připojit nebo rozostření nebo některý z podobně.
Ti, kteří jsou ve skutečnosti na prototypu
který pod kapotou jQuery vytvoří novou instanci sebe sama
a tak nějak se skrývá vše tyto údaje od vás.
Takže bod, který jsem takže zpátky sem
s funkcí, které vlastně skrýt prototyp od vás
a jen alias ní k dolaru dot fn.
Takže většina lidí ve skutečnosti si neuvědomují,
, že je prototyp pod that's kapuce -
že můžete klepnout na a přidat další funkce
na každou instanci jQuery pokud byste chtěli.
Takže "nový" subjekt opravdu trochu obtížné
pochopit na první pohled.
Při volání funkce s "novou",
to je úplně jiná způsob volání funkce
jako kdyby jste právě volal to jasně.
Takže "nový" operátor vytváří to, co se nazývá nová instance
objektu nebo nový instance, může si myslíte,
objektu jako třídy.
A když se to stane, hodnota z toho, které mohou být obeznámeni
se z jQuery, se nějak nastavit tento
na to, co je vhodné v té době.
Obvykle nastavte ji na Aktuální DOM uzel, který jste
na co jste procházejí jako každý, nebo něco takového.
Oni - Tato hodnota má být hodnota instance
které jste vytvořili pomocí "nové", který zahrnuje vše
na řetězci prototypu a všechny metod, které byste najít
jako vlastnosti prototypu.
Takže záleží na tom, jak funkce se nazývá,
jakou hodnotu je.
A je to opravdu matoucí pokud jste JavaScriptu nové.
Ale každá funkce, která se nazývá má - má na této hodnotě.
Takže i když jste nevytvořili nové instance něčeho,
Předpokládá se, že toto je být globální.
Nebo můžete zavolat funkci metodou volání
kde metodu aplikovat v JavaScriptu.
Můžete si funkce a určit, co by to mělo být.
Takže si můžete dělat to dynamický, který je opravdu silný
ale také vám umožní udělat věci, které mohou být zavádějící
a matoucí další vývojáři
v případě, že nejste použít k tomu.
A jQuery bych tvrdit, je ještě více matoucí
tím, že je vhodné a nastavení
na aktuální DOM uzel.
Ale jednoduché pravidlo k zapamatování jakou hodnotu je
když hledáte
na funkční volání je co zbylo z tečky.
Takže pokud máte objekt
a je to něco, tečka něco, co je funkce
že voláte pak První hodnota je to, co hodnota
to je.
Takže tady je příklad kódu
kde jsem vytvořit nový objekt doslovný
což je právě předmětem vytvořené pomocí složených závorek
a já jsem nastavit jméno Bob
a pak jsem si sayName Metoda, kterou zde, které -
takže v tomto sayName kdybych x dot sayName,
hodnota je rovna k x, protože levá
tečky je x. Takže pokud Nazval jsem to x dot sayName,
to bych Hello Bob.
A pak další příklad
kde jsem vlastně přiřazení x tečka sayName, funkce
proměnné Y, který, jak jsem se zmínil,
v JavaScriptu vás můžete přiřadit funkce
proměnných, kdykoli budete chtít, je to opravdu flexibilní, že způsob,
ale teď, když jsem volat Y, že ztratil kontext x.
Takže to je teď globální nebo pokud jste v přísném režimu,
Věřím, že je to null nebo nedefinované.
Ale - Takže Y není to, co jste čeká zde, pokud hledáte
na x a budete volat sayName,
jste očekával tento název má být Bob.
Ale pokud si to sundal objektu a volal, že
sama o sobě, to je nyní globální.
A to je to, co jsem se zmínil když vidíte dolar dot to,
často si nemyslím, že co se vlastně děje.
Ale jQuery druh má své vlastní jazyk domény specifické pro
pro práci s tímto a že to není to, co jste zvyklí
v JavaScriptu.
A já jsem poukázat na to protože je to opravdu důležité,
pro psaní dobře strukturovaných objektově orientovaný kód
ve JavaScript, aby opravdu dobré porozumění a pochopení
o tom, jak to funguje a jak Objektový model práce
a jak se nový provozovatel funguje.
V opačném případě můžete skončit s jQuery špagety
kde všechno je trochu z všude
a obchoduje pouze s DOM.
Pokud můžete skutečně napsat kódu JavaScript
v přehlednějším způsobem, to dělá to mnohem jednodušší
pracovat, třídit z oddělit obavy
o jednání s aktualizace DOM a řešení
s aktuálním logikou a kód.
Takže pojďme se podívat na Několik příkladů kolem, že.
Tak jsem si několik příkladů zde.
Tak to je jen jednoduchý příklad využití objektu JavaScript
a přidání několika funkcí k němu a pak vytvořit jakýsi
o jako miniaturní aplikace.
Takže je to velmi jednoduché skutečnosti.
Jediná věc, která to dělá, je na první pohled, že vyzve své jméno.
Tak jsem si řekl Tim a pak Můžete změnit své jméno s Bobem.
A to je vše aplikace dělá.
Ale to, co bych rád upozornil se, jak to dělá.
Tak jsem si to jméno generátor objekt, který má způsob startování
který žádá uživatele jejich jména
pouhým voláním této askForName
který tady dole dělá příkazového řádku
pokud nebyl přiřazen název pak se zeptá na to znovu
voláním této askForName.
A pak, jakmile se dostane jméno, volá tento název aktualizace.
Tak to pak nastaví jméno uživatele v tagu h1.
A v případě, že název není nastavení, vyvolá chybu.
[Neslyšitelný Poznámka]
Jistě. Tak to stanovuje jméno uživatele v h1 tagu
voláním setDisplayName , které stanovuje HTML
v názvu kontejneru JS a Jsem prefixu všechny mé HTML
s JS selektory jen proto, je to dobrý zvyk se dostat
do jen proto, aby to není tak matoucí
při použití selektory, jako je ID nebo tříd
jak pro styl a logiku
v JavaScriptu přední end aplikace.
Vzhledem k tomu, pokud máte jiný skupiny lidí pracujících
na kódové základny a mají voliče tam
že projektant rozhodne změnit, protože To je -
nevypadá skvěle, a tak chtějí dát do nové třídy a vzít
z vás a vy jste se spoléhat na něj pro účely JavaScript,
pak váš kód přestávky.
Je to dobré pro předponu a třídit
z názvů jako téměř JavaScript související třídy
nebo atributy prefix JS.
Tak to je docela jednoduché a můžete vidět
Ve všech těchto případech jsem si volání vrátit to na konci.
Tak to je dobrý zvyk se dostat do,
aby vám to platí návratová hodnota.
V askForName nejsem protože to dává smysl
že byste si jméno zpět.
Ale co, který umožňuje abys pak
pokud se vrátíte tuto aktualizaci jméno, je to vrací hodnotu
z setDisplayName který je vrací hodnotu tohoto.
A který umožňuje třídit řetězu, jak jste zvyklí
v jQuery vrácením hodnota tohoto pokaždé.
To se týká stávající objekty
takže se dalo nazvat tento bod askForName tečka setDisplayName
a to by držet Hodnota této a umožňují vám
mít krásný řetěz tam.
A pak - aby v Tento druhý příklad.
[Pause]
Dobrá.
OK. Tak pojďme do toho a otevřít konzoli
a jít do mého záložce Sources.
Budeme pop na to ve skutečnosti.
Takže vývojáře Chrome nástroje, které jsem zmínil,
je to kus na pravé a -
vidíte tuto stopku i když ve výchozím nastavení, je to černá.
Ale když se myš přes to, že říká: "nedělejte delší pauzu na výjimky.
Klikněte na pauzu na všechny výjimky. "
A když na něj kliknete Opět platí, že zmodrá.
A teď kdykoliv, že tam je chyba vyvolána
v kódu JavaScript, bude to zastavit na místě a umožní vám
zhodnotit, co se děje.
Takže - A to je opravdu užitečné koncept je asi poukázat.
A pak, pokud klepnete na tlačítko Znovu se ukazuje, fialová
a to je obvykle to, co jsem si to dovnitř
To jen zlomí kód když tam je výjimka
který nebyl chycen.
Takže mnohokrát v jQuery pro instance, když se snaží úlovky
otestovat, zda prohlížeč nebo ne má nějaké schopnosti
a pokračujte odtamtud.
To je pouze v případě, tam je chyba
, která nebyla chycen v try úlovku.
Takže pojďme zkusit a předložit jméno, které je prázdné.
Tak vidím, že Kód je nyní zastaven
na způsobu updateName a mohu myší jména
a vidět, že je prázdná, aby prázdné.
Tam je rovno prázdné.
Takže, ne-li pojmenovat hodit nový chyba, a teď můžu krok zpět
prostřednictvím funkce sloup a řekl: "OK,
kde se to vzalo, "a vidět, co je hodnota klienta je.
Tak to má metodu askForName,
setDisplayName začátek a updateName.
A to je jen opravdu užitečné způsob, jak můžete vidět, mít všechny
proměnné, které jsou k dispozici v tom rozsahu, jakož
jako proměnné uzavření, takže vše, co je zavřená
nad touto funkcí.
A tak vidím, že - co hodnota klienta je
a jaké hodnoty to je.
Takže to, protože jsme v jQuery je rovna
na aktuální DOM prvku.
Ale je to opravdu užitečné pro ladění kódu
rozdělit na chyby, jako je tento.
Dalším rysem Chrome Inspector je
že v každém okamžiku můžete klikněte na jednotlivé řádky
v řadě, a to bude přerušení v místech,
kde jste nastavit zarážky oni jsou odkazoval se na jako.
Takže když jsem klepněte na tlačítko, řádek zmodrá.
Takže dovolte mi, abych i nadále provedení tady, OK, to zlomil.
A teď pojďme nastavit jméno Alici a stiskněte Odeslat.
Takže teď vidím i před tím, než se dostal do bodu,
aktualizace všechno, je to teď tady se zastavil, abych mohl vidět
že moje toto jméno je Alice a pak můžu pokračovat -
dovolte mi, abych znovu načíst stránku.
Dobře, tak teď, když je to Znovu začíná na začátku,
že se zastavil na to linka a vidím
že jméno je v současné době definován.
askForName je, které ji fungovat je, takže je často užitečné
Máte-li funkce, které jsou pocházející z různých souborů
nebo na různých místech ve kód, můžete vidět, kde to je,
a pak skočit na to, to bude zvýrazněte ji.
Tak dobré se dostat ve zvyku použití ladicích nástrojů
které nejsou jen konzole dot protokol.
OK, takže pojďme podívejte se na druhém příkladu
který je více využívat prototypy, jak jsem se zmiňoval se.
Takže v tomto případě,
budeme vytvářet nový Funkce s názvem CS
a to je kapitálově takže konvence standardní
v JavaScriptu, je-li funkce má být použit
jako konstruktér, na rozdíl od
jen normální funkce, můžete ji využít.
Takže mám kapitálové CS a to má variabilní courseId
a courseTitle které Jsem se do tohoto courseId,
tento courseTitle v konstruktoru.
A pak jsem se také nastavit studenty a přednášky jako prázdné pole.
Takže důvod, že jste -
OK, takže prototyp vlastnosti pak byly definovány
tady se - tak šablona je jen jednoduchý podtržítko
šablony, šablony podtržítko je způsob, jak můžete -
podobně jako šablony že David se zmínil
na serveru, můžete stačí napsat tag script
který není JavaScript skript, ale text HTML
a co dělám s jQuery je -
to nevede těchto otevřené, jo, jdeme na to.
S jQuery, je to čím dál HTML hodnota této šabloně
a pak to běží přes zdůrazňují užitné knihovny
šablona motoru.
Takže dokumentace pro které je tady
podle užitného vzoru
ale v podstatě si můžete přečíst trochu více o tom.
Ale to vyhodnotí tento řetězec a změní jej do funkce
které pak mohou předat data do a volat dynamicky.
Další dvě metody, které mám jsou addStudent a addLecture.
To stačí přidat je do vnitřní pole, které jsem nastavit
v konstruktoru a pak způsob vykreslení.
Takže, pojďme vytvořit novou instance CS s názvem 164
které má tento kurz číslo 164 a název.
A pak CS50, který má CS50 a úvod do CS1
a poté přidat několik přednáší studentům
a pak volat CS50 činí.
A když jsem spustit kód, takže Dělám, že se Eval.
Nikdy opravdu chcete použít Eval, ale já jsem tak nějak
ze s ohledem na všechny JavaScript, který je tady
a spuštěním běhu.
To činí v tomto šablona tyto nové případy
třídy, které mají CS vlastnosti, takže jsme šli
díky a udělal addLecture a addStudent každému.
A jak jsem se zmínil protože Vracím to,
Já si skutečně řetěz tyto addLecture a addStudent volání
a že to bude fungovat stejně dobře.
Další funkce v JavaScriptu , že je ještě užitečnější
na straně serveru, kde opravdu v daném čase
pokud vaše aplikace dostane větší nevím, kde jste
a je to těžší pro nastavení Tyto jednotlivé zarážky
že jsem se zmínil v Inspektor Chrome je
používat debugger klíčové slovo.
Takže je to jen D-E-B-U-G-G-E-R.
A když dáte debugger klíčové slovo v kódu
a máte - tam jdeme, dva Gs.
Když dáte ladicí program klíčové slovo v kódu
a vedete debugger
jako je Chrome Inspektor zde
nebo na straně serveru Chrome Inspektor, to vám řekne JavaScript
zastavit popravu na tomto řádku kódu a umožňuje vám
krokovat ostatní o provedení kódů.
Takže když jsem klepněte na příkaz Spustit kód tady, je to teď zastavit
v tomto debugger řádku a mohu viz OK, tady je hodnota CS50
a to má samozřejmě název, samozřejmě ID,
to má žádné přednášky, žádné studenti.
A pak jsem si krokovat Celá addLecture,
Vidím, že to tlačí Na těchto přednáškách,
myší přes to, že "Hello World".
Mohu skutečně konzole to tak je tato volba nastavena
na aktuální objekt že jste palců
Tato přednáška je "Hello World".
A mějte krokování přes co chci.
Pokud nechci krokem
na příčiny volání funkce 'A Vím, co to jde
k tomu jít do addLecture, tam je to tlačítko tady
který říká, že "krok po další volání funkce, "a tak můžu jít
na místě bylo, že jsem možná přemýšlel o něčem.
Stejně jako například 164 činí.
Takže v tuto chvíli, je to bude vykreslen.
Vidím tuto šablonu je sestaven šablona.
Vidím v tomto bodě I by měla mít dva studenty
a dvě přednášky.
A pak je tu prototyp řetěz, který jsem měl na mysli.
Takže výchozí ten, který je dodáván spolu s jen objektu
v JavaScriptu obecně,
přichází se dvěma řetězci hodnota konstruktoru.
A pak ty, které Přidal jsem na sebe
s addLecture, addStudent a vlastnosti
které jsou jedinečné pro tento instance třídy
jak to bylo vyvoláno pomocí klíčového slova new.
Takže pojďme dělat jen jeden více příkladů na toto téma
a pak budeme krok k některým další zajímavé věci
na straně serveru.
Tak pojďme do toho a otevřete Tento poslední příklad, který je -
pojďme se podívat, kde je kód?
Já nevím, kde to šlo.
OK, dobře, můžeme přeskočit přes tento kód pak vlastně -
oh vydrž, myslím, že jsem vynechal stylů pro kód.
OK, takže pojďme se to trochu větší.
V tomto příkladu jsem ukazovat trochu více na nastavení
up řetězci prototypu,
takže nastavení dědictví s JavaScript.
Takže v tomto případě máme zboží, které se děje
se pravděpodobně udržovat více kurzů.
A tak zboží má an metody addCourse.
Tak to zkontroluje, zda kurz který je předán je instance
Samozřejmě, jak uplatnit pomocí klíčového slova new.
Takže pokud se pokusíte a odeslat
v něco jiného, že bude křičet na vás.
Metoda render, který bude činí každý z kurzů
o sestavování její šablony níže.
A máme kurz který přístup
V tomto případě je základní třída pro jednotlivých oddělení kurzy.
A místo toho, aby nastavení každého
z kurzu tečky Metoda prototyp tečka
nebo majetku pomocí rozšíření pomocník v knihovně podtržítka
třídit hovoru rozšířit Tento prototyp se všemi
z těchto vlastností, které jsou užitečné, trochu čitelnější.
A pak tady dělá co je známé jako nastavení
up řetězci prototypu.
Takže je to vlastně trochu složité pro lidi na první pohled
a to i přesto, že udělal to na chvíli, je to trochu těžké
zabalit hlavu kolem.
Ale nenechte se zastrašit.
Takže jsem nastavení nové -
zcela nová třída objekt zde, CS.
A v konstruktoru,
Říkám kurz platí tento argumentů.
Takže argumenty je zvláštní hodnota Myslím, že byste to mohl nazvat
v JavaScriptu, klíčové slovo, které má všechny
ze všeho, co je předán spolu se argumenty
které funkce jsou k dispozici s argumenty říkají,
s klíčovým slovem argumenty.
Takže jak volám se samozřejmě dot platí,
to je aktuální kontext s nimiž CS je volána.
Takže když jsem to také vyvolat nové to je - to je hodnota CS.
A já říkám tomuhle Samozřejmě metoda zde se.
Oh promiň - volat toto Metoda Samozřejmě tady
ale nastavit hodnotu tohoto se bez ohledu na hodnotu
to je tady.
Takže slovo platí umožňuje vám nějak změnit stav
z toho, který je, jak jQuery je povoleno třídit spínače
mimo to na vás jako jdete přes
a udělat prvků DOM namísto objektu jQuery.
Takže teď jdu do nastavení dočasná funkce
která se chytit Prototyp kurzu.
A nějak nastavit se svým prototypem
a pak nastavte prototyp na funkci objektu CS
do nové instance, které.
Takže v podstatě jsem místo toho řekl -
když jsem tady dělal cs dot Prototyp se rovná nový kurz.
Pak by bylo volání vše
v této funkci konstruktoru,
které jsem nechtěl nutně chtěl.
Takže všechno, co dělám, je druh vytváří téměř
jako náhradní funkci, která bude mít prototyp kurzy
na něj a trochu napodobovat prototyp -
Samozřejmě, ale bez toho, vše v konstruktoru
a nastavit, aby na prototypu.
A pak jsem jen přidání takže oddělení
v tomto případě je počítač Science pro objekt CS.
A pak jsem si jakousi Most verze dělat, že.
To nefunguje v IE9.
Takže to je důvod, proč jsem chtěl, ukázat jakousi jak -
co to dělá pod kapotou.
Ale můžete jej nastavit se stejným způsobem
kde Econ rovná funkci Samozřejmě platí tyto argumenty
a pak říkají, Econ DOT prototyp rovná objekt dot CreateCourse
dot prototyp.
Tak to vytvoří nový objekt který je jen prototyp
na kurzu a pak nastavte oddělení tam.
Takže teď pojďme nastavit debugger zde a klikněte na útěku.
Tam jdeme.
Takže CS164 můžeme vidět Řetězec prototypu máme
vlastnosti, které jsou nastavte v konstruktoru.
Takže hodnoty nich, které byly stanoveny a pak na řetězci prototypu
pro objekt CS to mělo Oddělení informatiky nastavit.
A pak na základní Řetězec prototypu,
jsme se pak všichni metody a vlastnosti
které jsou jedinečné pro objekt kurzu.
A pak máme Základní objekty.
Takže to nějak rychle Příklad řetězce prototypu.
A jak můžete vidět zde, zde jsou dvě hodnoty na oddělení.
Takže tam je oddělení informatiky
a pak oddělení není uveden a který mi řekl,
jako výchozí hodnotu zde.
Takže prototypový řetězec je vlastně jen jednotlivě
Seznam link.
A jak se snaží najít nemovitost,
to bude začínat na nejvyšší hodnotu na úrovni.
Takže to, co je definováno v Funkce konstruktoru
a pak se nějak jít dolů Řetězec prototypu odtud.
Tak proto, že našel, tak -
pokud tady, říkám CS50 tečka oddělení,
to řeknu Computer Science.
Ale když řeknu, var -
[Pause]
Ale když řeknu, humanitní vědy rovná se nový kurz
a pak jsem řekl humanitní vědy dot oddělení,
Uvidím oddělení není uveden , protože to šlo na první -
Můžu se podívat na prototypu řetěz tady vlastně.
Tak to šlo poprvé do kurzu objektu a viděl, že nic
na prototypu řetězci na tato úroveň pro oddělení
nebo hodnoty oddělení, aby pak to skočí na další úroveň,
průběh a vzhled předat tam a najde ji.
Tak to prostě něco jako jde dolů z vrcholu dolů
a to je druh něco, co je jedinečné
o JavaScript je které můžete změnit jakýkoli
z těchto hodnot na nějaký daný čas.
Takže v konstruktoru nebo v jednotlivé metody na objektu
když chci nastavit tento Oddělení pro něco nového,
nebo když dokonce chcete nastavit některé z těchto funkcí
které jsou již existují
něco nového, Jsem svobodný k tomu, že.
Takže teď mám CS50 tečku addLecture, vypadá, že.
A když chci nastavit tak, aby CS50 addLecture jen rovná
na prázdné funkce.
Pak teď vidím, že je to Jen zcela změnil
které nejste schopni udělat další jazyky
kde budete mít přísnější třídy na základě dědictví
a vše, co je nějak nastavit.
JavaScript je velmi, velmi flexibilní s ohledem na to.
OK, pojďme skočit zpět V snímků.
Takže pokud například budete by vždy rádi funkci
mít zvláštní tato hodnota nastavena na něj.
Můžete volat funkce dot bind
a nastavit, co hodnota to by mělo být.
Můžete myslet na to, jak -
"Snažím se myslet na dobrý reálný příklad světě, ale ",
Chcete-li chránit svůj kód
proti někomu potenciálně volání s hodnotou
, že by neměly být v tomto.
Stejně jako například AJAX callback jako přebytku nebo chybou.
Ty jsou obvykle nenazývají
s dobrým sémantické hodnota tohoto.
A ty jsi jako: "OK, jsem vždy chci to být hodnota
objektu předmětu že jsem pracoval.
Nebo pohled, který jsem práci s v mém kódu
která představuje tento DOM uzel, můžete nastavit -
můžete svázat kontext této a pak, když se to jmenuje později
o jQuery a nemá dobré z toho, že budu držet
na to, co to ohraničené.
Pak je tu volání funkce byly můžete určit kontext
a specifikovat proměnné počet argumentů.
A pak je tu funkce aplikovat které můžete předat
v kontextu a pak buď pole
nebo argumenty namítá, že Zmínil jsem se, jak vidíte zde.
A argumenty v některém funkce, které voláte,
můžete zadat v slovo "argumenty"
a to bude mít všechno argumenty.
Má "délka" majetek
což je, jak lze argumenty byly vlastně přešel na těchto metod
protože v JavaScriptu můžete setřídit hovoru
s variabilní čísla argumentů.
Je to užitečné pro pořekadlo pokud to měl jeden argument,
pak následovat tento kód cestu.
Pokud to mělo dvě, možná budete Chcete sledovat jiný způsob.
To vám umožní mít skutečně dynamické rozhraní API pro vaše metody.
Můžete si myslet že s jQuery
jako když máte dolar dot nebo bind.
A je to trochu dělá různé věci
o tom, zda si dát jeden argument, nebo dva nebo tři
nebo spustit s funkcí.
Je to pomocí argumentů vlastnost
a argumenty délka v mnoha případech
aby toto kouzlo Funkce se stalo.
Věci, které nemůžete dělat s argumenty je používat jen
Ve výchozím nastavení jako pole.
Takže můžete říct argumenty tři a nastavte ji na něco
jak byste mohli používat přiřazení pole.
Můžete použít - hodně metod podtržení
buď pro sbírek nebo pro práci s poli,
můžete předat argumenty a to si uvědomit,
že je to argumenty předmět a druh
o to postará za vás.
Ale pokud chcete používat argumenty, které jsou předány
prostřednictvím funkce jako pole,
můžete použít podtržítko dot dvě pole.
Jeden z čísla užitných funkcí
že se stavět do podtrhnout.