>> U redu, tako da danas, Ja ću biti u razgovoru
o JavaScript i kako je to razlikuje od drugih jezika
da bi moglo biti volio PHP.
Tako je u posljednjem predavanju o Ponedjeljak, razgovarali smo malo
o tome što je slično, što je upoznati između JavaScript
i PHP ili Python ili Ruby ili C ili drugim jezicima
koje ste već upoznati.
Ali JavaScript je zapravo ima zaista jedinstvenom uzeti
na objektnom modelu koji čini To na neki način potpuno različit
nego u većini jezika koji ideš baviti.
Dakle funkcije su svojevrsni
od underappreciated Koncept u JavaScript.
Oni su daleko moćniji od oni su na drugim jezicima
zato što mogu u - iz jednog razloga,
oni su u mogućnosti da se postaviti kao vrijednosti.
Dakle, ovdje imamo var x jednaka funkciju
i to je prvi razred vrijednost koja se može prenijeti
okolo kao argument.
Dakle, ne morate se Izjavljujem funkcija x
i samo koristiti xu tom opsegu.
Možete proći vrijednost x. bilo gdje u cijeloj, znate,
kao argument u još jedna funkcija
gdje možete modul izvoz kao David spominje u čvor.
Dakle, stvar je slijedeća
da je funkcija objekt u JavaScript.
Dakle, što zapravo može postaviti svojstva kao vrijednosti
na funkciju i samo liječenje to kao da je objekt.
Dakle, kada radite s jQuery, znate, da dolar
a onda prođe Selektor u nju
i pozvati ga kao funkcija.
Ali onda također su dolar dot AJAX.
I to ne vrsta smisla ako mislite
u funkciji samo što se nešto što možete pozvati
ili nazovite.
Ali JavaScript omogućuje vam da postaviti svojstva na funkcijama
kao statička svojstva sa samo x dot someProp
kao što sam naglasio vani.
Sljedeća točka koju smo ide na izlet u malo više
u dubini je činjenica da se Funkcije se mogu tretirati
kao klasa u JavaScriptu.
Tako da je koncept ovog novog operatera
što stvara novu instancu Funkcija zajedno s vrstom
poput klase poput tijela koji dolazi zajedno s njim
i mi ćemo ići u nju malo više,
to se zove prototip.
I to je ono što je čini JavaScript vrlo jedinstven u usporedbi
na drugim jezicima koje se temelje klase,
JavaScript je prototip temelji.
I onda samo na Dno postoji,
funkcija samo može nazvati očito kao što smo navikli.
Dakle, to nije ništa novo.
Još jedna stvar koja je jedinstvena je
da su nizovi zapravo objekti.
Oni ne vole da su u PHP
gdje ste upravo stvorili Novi niz.
To je zapravo skraćenica za govoreći novi niz.
I niz je zapravo podrazred objekta.
Dakle, to je nešto drugačije i ja ću otići
u nešto više pojedinosti o tome.
A pogrešaka sposobnosti
s JavaScriptom su stvarno neusporediv koliko sam ja vidio.
To je screenshot od Chrome inspektora
što ćemo se koriste za ostatak
prezentacije danas.
A da bi se to, samo ići na podnošenje razvojne alate
i otvoren Chrome inspektor ili možete pravo kliknite
i kliknite showa elementa I mislim da je na HTML stranici
ili mislim da je naredba Opcija J otvara ovaj gore.
No, mi ćemo ići u to i vi zapravo može postaviti kontrolne točke
što radite kroz JavaScript broj i vrsta
od procijeniti što lokalna varijable, što je vrijednost
to je, a to čini način lakše ispravljanje koda.
I ne - to nije prisiljen preglednik na strani kod
ali ti mogu zapravo pokrenuti instancu
ove Chrome inspektora za svoje usluge strani koda
što je stvarno uredan, jer vam možete korak kroz liniju po liniju
kao zahtjev dolazi na svoje poslužitelja i vidjeti što se događa
i igrati s varijablama u konzoli ovdje.
Dakle, kao što sam spomenuo, JavaScript je jezik prototip temelji
što znači da postoji niz zadane vrijednosti koje su neka vrsta
skrivenih za svaku funkciju
u objektu DOT Prototip vlasništvo.
Dakle, to je nekakav hash samo različite zadane vrijednosti
da kad se pozovete funkcionirati s novim ključnu riječ,
oni su postavljeni od strane zadani kao funkcija
koje su dostupne na primjer.
Tako da je zapravo stvarno učinkovit za -
to učinkovit način stvaranje objekata memorije mudar
zato JavaScript runtime ima samo pratiti
prototipa objekta.
To na neki način ukazuje na to
kada cretae novi instanca klase.
A ti također može oponašati nasljedstva kao što je poznato
u jezicima klase-based gdje ste vrsta
poput toga da se proširuje, proširuje da može oponašati
da u JavaScriptu kroz ono što se zove
Prototip lanac.
A vidjet ćemo primjere o tome.
Dakle, ako je vaš - jQuery dodataka zapravo oni preporučuju jQuery
Autori se koriste dolar točku fusnota dodati funkcionalnost
na jQuery knjižnice.
I mi smo zapravo ide skok na - Dakle, na ovoj stranici,
imamo dolar - Ja uključene jQuery.
A ako to ne učinite dolar Točka u konzoli
koje sam spomenuo donosi što se kroz naredbe smjene J
ili samo ide za pregled, Developer, Razvojni alati
i ide na karticu izvorima.
[Nečujno Napomena]
Oh da. Dakle, kada sam počeo upisati u varijablu,
to je auto-završio za mene ono što je tamo.
Tako sam upisali u dolar, a ja mogu vidim mislim Chrome ima neke
Ugrađeni dolar, Dolar je i dolar x.
Dakle, u ovom trenutku samo želim Dolar je i sam stavio u točci.
I onda mi pokazuje Sva svojstva
koje su dostupne na jQuery objekt.
Ali ako činim dolar dot prototip,
Sada vidim sve metode da sam se koristite
kada imam dolara, selektor i onda sam skinuti lanac da s,
znate, dodajte klasu ili dodati ili zamućenja ili bilo slično.
Oni su zapravo Na prototipu
koji je ispod haube jQuery stvara novu instancu sebi
i to vrsta skriva sve te pojedinosti od vas.
Dakle točka koju sam bio što vratiti ovamo
funkciju, oni zapravo skrivaju prototip od tebe
i samo alias njega na dolar dot fusnota.
Dakle, većina ljudi zapravo ne shvaćaju
da je prototip Ispod poklopca that's -
koje možete iskoristiti i dodajte dodatne funkcionalnosti
svakom slučaju jQuery ako želiš.
Dakle, "novi" operater stvarno veoma teško
razumjeti na prvi pogled.
Kada zovete funkciju s "novim",
to je sasvim drugačija način pozivanja funkcije
kao da ste upravo zvao to je jasno.
Dakle, "novi" operator stvara ono što se zove nova instanca
objekta ili novi primjer, možete misliti
objekta kao klase.
A kad se to dogodi, vrijednost to što može biti upoznati
s od jQuery, oni nekako postaviti ova
za sve što je zgodan u vrijeme.
Obično ga postavite na Trenutna DOM čvor koji ste
na kao što prolaziš kao svaka ili nešto slično.
Oni - Ova vrijednost bi trebala da primjerice vrijednost
koje ste stvorili s "novim", koji uključuje sve
na prototip nizu i sve od metoda koju bih naći
kao prototip svojstva.
Dakle, to ovisi o tome kako poziva funkcija,
što je vrijednost ovoga je.
I to je stvarno zbunjujuće Ako ste novi u JavaScriptu.
Ali svaka funkcija koja se zove je - je pri toj vrijednosti.
Dakle, čak i ako niste stvorili nova instanca nešto,
da je to pretpostavlja biti globalan.
Ili možete nazvati funkciju metodom poziva
gdje se primjenjuje metodu u JavaScript.
Možete funkciju i odrediti što bi to trebalo biti.
Dakle, možete to učiniti dinamično, što je stvarno moćan
, ali također vam omogućuje da učinite stvari koje mogu biti pogrešne
i zbunjujuće za ostali programeri
ako oni ne koriste činjenice.
I jQuery, ja bih rekao čini još više zbunjuje
tako što je zgodan i to postavljanjem
na trenutni DOM čvor.
Ali jednostavno pravilo koje treba zapamtiti što je vrijednost ovoga je
kada ste u potrazi
na funkcionalne poziv je ono što je ostalo od točke.
Dakle, ako imate objekt
i to je nešto dot nešto je funkcija
da zovete onda Prva vrijednost je ono što je vrijednost
to je.
Dakle, ovdje je primjer kod
gdje stvaram Novi objekt doslovni
što je samo objekt stvorena s vitičastim zagradama
i ja sam postavljanje ime Bobu
i onda imam sayName metoda koja ovdje -
pa unutar ovog sayName ako ja x dot sayName,
vrijednost je jednaka na X, jer je lijeva
od točke je x. Dakle, ako Ja bih to nazvao x dot sayName,
to bi pozdraviti Bob.
I onda još jedan primjer
gdje sam zapravo dodjeljivanje x dot sayName, funkcija
na varijablu Y, koji je kao što sam spomenuo
u JavaScriptu vas može dodijeliti funkcije
varijablama kad god želite, to je stvarno fleksibilan na taj način,
ali sad kad sam nazvati Y, to je izgubila kontekst x.
Dakle, to je sada globalna ili ako ste u strogom načinu,
Ja vjerujem da je nulta ili neodređen.
Ali - Dakle Y nije ono što ste Očekujemo ovdje ako ste u potrazi
u x i idete nazvati sayName,
ti si očekivao ovo ime je trebao biti Bob.
Ali, ako ste se izvukli objekt i to se zove
samo po sebi, to je sada globalno.
I to je ono što sam bio spomena kad vidite dolar dot ovo,
često ne razmišljaju o što se zapravo događa.
Ali jQuery vrsta ima svoje vlastitu domenu jezik
za rješavanje ovog i to nije ono što ste navikli
u JavaScriptu.
A ja na to upozorili jer to je stvarno važno
za pisanje dobro strukturiran objektno orijentirano code
u JavaScript stvarno imati dobro poznavanje i razumijevanje
kako se to radi i kako objekta modela radovi
i kako novi operater radi.
Inače, da ćete završiti s jQuery špagetima
gdje sve je nekako od sve više mjesta
a samo se bave DOM.
Ako mogu zapravo pisati JavaScript
u više strukturiran način, to ga čini puno lakše
raditi, za sortiranje od odvojite zabrinutost
od bavljenja ažuriranje DOM i rješavanju
sa stvarnim logike i koda.
Tako ćemo pogledati a Nekoliko primjera oko toga.
Dakle, imam neke primjere ovdje.
Dakle, ovo je samo jednostavan primjer korištenja JavaScript objekt
i dodavanjem nekoliko funkcija na njega i onda stvara svojevrsni
poput minijaturne aplikacije.
Dakle, to je zapravo vrlo jednostavna.
Jedino što je to ipak Isprva se traži vaše ime.
Dakle, ja ću reći Tim, a onda može promijeniti svoje ime u Bob.
I da je sve ovo Aplikacija radi.
No, ono što bih želio ukazati out je kako se to radi.
Dakle, imam taj naziv generator objekt koji ima starta
koji pita korisnika za svoje ime
po samo telefonom askForName
koji ovdje dolje ne upozoravaju
Ako ime nije dodijeljena onda se pita za to opet
telefonom askForName.
I onda nakon što dobiva ime, to naziva ovaj naziv ažuriranja.
Pa to onda postavlja korisničko ime u H1 tag.
A ako ime nije postavili, to baca na pogrešku.
[Nečujno Napomena]
Oh da. Dakle, postavlja njegovo ime u H1 tag
pozivom setDisplayName koja postavlja HTML
u JS ime spremnika i Ja sam prefiksa sve moje HTML
s JS selektora samo zato to je dobra navika da se
u samo da bi to nije tako zbunjujuće
kada koristite selektori poput ID-a ili klasa
za oba stila i logike
u svom JavaScript Prednji dio aplikacije.
Jer, ako imate drugačije skupina ljudi koji rade
na temelju koda, a vi imaju selektor postoji
da dizajner odluči za promjenu, jer it's -
ne izgledaju sjajno, tako da oni žele staviti u novu klasu i uzeti
iz tvoje i sad se oslanja na njemu JavaScript svrhe,
onda tvoj kod razbija.
Dobro je da se prefiks i sortiranje
u prostoru imena poput gotovo JavaScript-vezani razredi
ili atribute s Prefiks JS.
Dakle, ovo je lijepa jednostavan i možete vidjeti
u svim tim slučajevima sam nazivajući ovo vratiti na kraju.
Dakle, ovo je dobro običaj da se u,
da vam ga je valjana vrijednost povratak.
U askForName nisam jer to ima smisla
da bi dobili ime natrag.
No, što to omogućuje što učiniti onda
ako se vrate ovo ažuriranje ime, to je povratak na vrijednost
od setDisplayName što je vraća vrijednost toga.
I to vam omogućuje sortiranje lanca, kao da ste koristili
u jQuery vraćanjem Vrijednost tog svaki put.
To se odnosi na sadašnji objekti
tako da bi mogao nazvati ovu točku askForName dot setDisplayName
i to će zadržati Vrijednost to i omogućiti vam
imati lijep lanac postoji.
A onda je u - tako da u ovaj drugi primjer.
[Pauza]
U redu.
OK. Tako ćemo ići naprijed i otvoriti konzolu
i ići na moj račun izvorima.
Mi ćemo se pojaviti ovo zapravo.
Dakle, u Chrome developer alate koje sam spomenuo,
je ovaj komad na desno i -
možete vidjeti ovaj znak stop iako je po defaultu, to je crna.
No, kada mišem preko njega, to kaže: "Ne zaustavite na iznimke.
Kliknite na pauzu sve iznimke. "
A kad ga kliknete opet, to postaje plav.
A sad bilo da postoji greška bačena
u svom JavaScript kod, to ću zaustavi na mjestu i omogućuju vam
procijeniti što se događa.
Dakle - I to je jako korisno Koncept je oko istaknuti.
A onda, ako kliknete opet, ispada ljubičasta
i to je obično ono što sam ga zadržati u.
To je samo razbija kod kada postoji iznimka
koji nije uhvaćen.
Dakle, puno puta u jQuery za Primjerice, oni pokušavaju ulov
provjeriti da li ili ne preglednik ima nekakvu sposobnost
i nastaviti od tamo.
To je samo kada postoji greška
koji nije bio uhvaćen u probati uhvatiti.
Dakle, pokušajmo i dostaviti Ime koje je prazno.
Dakle, ja mogu vidjeti da code je sada zaustavljen
na metodu updateName i ja mišem preko imena
a vidim da je prazno prazno.
Tu je jednako prazan.
Dakle, ako ne spomenemo baciti novo pogrešaka, a sada sam se korak natrag
preko funkcije stupac i reći: "U redu,
gdje je ovo stiglo, "a vidjeti što je vrijednost klijenta.
Dakle, to je askForName metodu,
setDisplayName početak i updateName.
A to je samo jako korisno način na koji možete vidjeti ima sve
varijabli koje su dostupne u tom okviru, kao i
radi zatvaranja varijable, pa sve što je zatvoreno
preuzima tu funkciju.
I tako ja mogu vidjeti da je - ono vrijednost klijenta je
a što je vrijednost to.
Pa to jer smo u jQuery je jednaka
trenutnom DOM elementa.
Ali to je jako korisno za ispravljanje pogrešaka kod
razbiti na pogreške kao što je ovaj.
Druga značajka Chrome inspektor je
da u bilo kojem trenutku možete kliknite na različitim linijama
u nizu, i to ću razbiti na mjestima
gdje ste postavili kontrolne točke oni nazivaju.
Dakle, ako kliknem, linija poplavi.
Pa neka mi i dalje Izvršenje ovdje, u redu, da je razbio.
A sada idemo postaviti ime Alice i pogodio Podnijeti.
Tako da sada mogu vidjeti čak i prije nego što je stigao do točke
ažuriranju sve, to je sada zaustavljen upravo ovdje, tako da mogu vidjeti
da mi je to ime je Alice a onda sam se i dalje -
neka mi se ponovno učitati stranicu.
U redu, tako da sada kada je s početkom u početku opet,
to je zaustavio na ovo linija i vidim
to ime je trenutno nedefinirano.
askForName je što to funkcionirati je, tako da je često korisno
ako imate funkcije koje su koji dolaze iz različitih datoteka
ili različitim mjestima u code, možete vidjeti gdje je,
i onda skočiti na to, to će ga istaknuti.
Pa dobro da se u naviku korištenja alate za ispravljanje pogrešaka
da su ne samo tješim dot dnevnik.
OK, pa neka je uzme pogled na drugi primjer
što čini više koristiti prototipova kao što sam skrenuo pozornost.
Dakle, u ovom primjeru,
mi stvaramo nova funkcija zove CS
i to je kapitaliziran pa konvenciji standardni
u JavaScriptu je li Funkcija je trebao biti korišten
kao graditelja, za razliku od
samo normalno funkcija, što ga kapitalizirati.
Dakle, imam kapitala CS i to Potrebno promjenjivu courseId
i courseTitle koji Postavio sam na ovu courseId,
ovo courseTitle u konstruktor.
A onda sam se također postaviti studente i predavanja su praznih polja.
Dakle, razlog da se -
U redu, tako prototip Zatim su definirana svojstva
ovdje dolje sa - pa predložak je samo jednostavan donja
predložak, predložak donja biti način na koji možete -
slično predložaka da je David spomenuo
na poslužitelju, možete samo napisati oznaku skripte
koji nije JavaScript skripta, ali tekst HTML
i što radim s jQuery je -
to ne bi ovo otvoren, da, tamo idemo.
S jQuery, to je sve HTML vrijednost tog predloška
i onda ga prikazuju kroz naglašavaju komunalnih knjižnice
Predložak motora.
Dakle dokumentacije za to je ovdje dolje
pod komunalnih predloška
ali u osnovi možete pročitati malo više o tome.
Ali to ocjenjuje ovaj niz i pretvara ga u funkciju
koji tada možemo proći podatke u i to nazvati dinamično.
Iduće dvije metode koje imam su addStudent i addLecture.
To samo ih dodati unutarnji nizovi da sam si postavili
u konstruktor i onda donijeti metodu.
Dakle, neka je stvoriti nove instanca CS zove 164
koji je ovaj tečaj broj 164 i naslov.
I onda CS50 koji ima CS50 i uvod u CS1
a zatim dodajte malo predavanja studentima
a zatim pozvati CS50 donijeti.
A ako sam pokrenuti kod, tako Radim to s procjenjivala.
Vi zapravo nikada ne želite koristiti Eval, ali ja sam samo vrsta
poduzimanje svih JavaScript da je ovdje
ga i provodi u letu.
To čini u ovo predložak ove nove slučajeve
CS klase koje imaju svojstva, pa smo otišli
kroz i učinio addLecture i addStudent jedni.
I kao što sam spomenuo jer sam se vraćaju to,
Ja zapravo mogu lanac njih addLecture i addStudent pozivi
i to će raditi jednako dobro.
Drugi lik u JavaScriptu da je mnogo korisnije
na strani poslužitelja, gdje vi stvarno u bilo kojem trenutku
ako je vaš zahtjev dobiva Veći ne znate gdje ste
i to je teže postaviti pojedinačni breakpoints
koje sam spomenuo u Chrome inspektor je
koristiti debugger ključne riječi.
Dakle, to je samo D-E-B-U-G-G-E-R.
A kad ste stavili debugger Ključna riječ u kodu
i imate - tamo idemo, dva GS.
Kada stavite debugger Ključna riječ u kodu
i ti si trčanje debugger
kao što je krom Inspektor ovdje
ili strani poslužitelja Chrome Inspektore, što govori JavaScript
za zaustavljanje ovrhe na toj liniji koda i onda vam omogućuje
na korak do samoga kraja izvršenja kodova.
Dakle, ako kliknem run kod Evo, to je sada zaustavljanja
na toj liniji debugger i ja mogu vidi OK, ovdje je vrijednost CS50
i to je dobio kolegij naslov, naravno, ID,
to je dobio nema predavanja, nema studenata.
A onda sam se korak kroz Cijeli addLecture,
Vidim da je pritom Na tim predavanjima,
miša preko toga, "Hello World".
Ja zapravo mogu u Konzola to učiniti tako da ovo je postavljen
na trenutni objekt da ste u.
Ovo predavanje je "Hello World".
I držati Povelja kroz koliko god želim.
Ako ja ne želim korak
u funkciju zovu 'uzroka Ja znam što da se događa
učiniti ide u addLecture, postoji ova tipka ovdje
koji kaže: "Stanite pored Funkcija poziva, "i tako ja mogu ići
do te mjere da su mi možda pitate o nečemu.
Kao na primjer 164 donijeti.
Dakle, u ovom trenutku, to je će biti donesena.
Vidim ovaj predložak je sastavio predložak.
Vidim u ovom trenutku ja trebao imati dva studenta
i dva predavanja.
A tu je i prototip lanac koji sam mislila.
Dakle zadana onaj koji dolazi uz samo jedan objekt
u JavaScript u cjelini,
to dolazi s dva niza Vrijednost konstruktora.
I onda oni koji Dodao sam na sebi
s addLecture, addStudent te svojstva
koji su jedinstveni za to instanca klase
kao što je pozvao s novim ključnu riječ.
Tako ćemo napraviti samo jedan više primjera o tome
i onda ćemo korak s nekim više zanimljivih stvari
na strani poslužitelja.
Dakle, idemo naprijed i otvoriti ovaj zadnji primjer koji je -
Da vidimo, gdje je broj?
Ja ne znam gdje je to otišla.
OK, dobro, možemo samo preskočiti preko ovog koda onda zapravo -
oh drži se, mislim da sam propustila style sheet za šifru.
U redu, idemo napraviti ovo malo veći.
U ovom primjeru, ja sam pokazujući Nešto više o postavci
do prototipa lancu,
pa postavljanje baštinu sa JavaScript.
Dakle, u ovom slučaju, imamo katalog koji će
to vjerojatno zadržati više tečajeva.
I tako katalog ima an metode addCourse.
Tako da provjerava je li kolegij koji je donesen u je instanca
Naravno, kao pozivati s novim ključnu riječ.
Dakle, ako ste probati i poslati
u nešto drugo, to će vikati na tebe.
Donijeti metoda koja će prikazati svaku od predmeta
prikupljanjem svoj predložak u nastavku.
I mi imamo tečaj koja pristupa
u tom slučaju baza klase za individualni tečajevi Odjela.
I umjesto postavljanja svaka
od točke tečaj Način prototip dot
ili imovine koristeći produljiti pomagač u podvlačenje knjižnici
sortirati poziva produljiti Ovaj prototip sa svim
tih svojstava, koji je korisno, malo lakše čitati.
I onda ovdje radiš ono što je poznato kao postavljanje
do prototipa lancu.
Dakle, ovo je zapravo malo lukav da ljudi na prvi
pa čak i dalje nakon što je učinio ovo za neko vrijeme, to je vrsta teško
omotati glavu oko.
No, ne dopustite da vas panika.
Dakle, ja sam postavljanje nove -
potpuno nova klasa prigovoriti ovdje, CS.
I u konstruktor,
Ja govorim tečaj primijeniti ovaj argumente.
Dakle argumenti je posebna Vrijednost Mislim da bi se moglo nazvati
u JavaScript, ključna riječ koja ima sve
od svega što je proslijedio je argumenata
da je funkcija na raspolaganju s argumenti zovu,
s argumentima ključnu riječ.
Dakle, kao što sam ja zovem uz naravno dot vrijede,
ovo je trenutni kontekst s kojim CS se zove.
Dakle, kada sam ga pozvati s novim to je - to je vrijednost CS.
A ja govorim to nazivamo Naravno metoda ovdje.
Ma žao - to nazivamo Način Naravno ovdje
ali postaviti vrijednost ovog da se bez obzira na vrijednost
za to je upravo ovdje.
Dakle, ključna riječ primjenjuje dopušta da nekako promijeniti stanje
to što je kako jQuery je dopušteno da se vrstom prekidača
se ovo na vas kao što prolaziš
i napraviti DOM elemenata umjesto jQuery objekta.
Dakle, sad ću postaviti privremena funkcija
koji će zgrabite Prototip naravno.
I na neki način postaviti svojoj prototip
a zatim postavite prototip na CS funkcije objekta
na novi primjer toga.
Tako je u osnovi sam govoreći, umjesto -
ako sam ovdje učinio CS Dot Prototip jednaka novi tečaj.
Onda bi poziva sve
u ovom graditelj funkciji,
što ja ne bih nužno je htio.
Dakle, sve što radim je vrsta stvara gotovo
kao surogat funkcije koje će imati tečajeve prototip
na to i svojevrsni oponaša prototip -
Naravno, ali ne radi sve u konstruktoru
i postaviti da bi prototip.
I onda sam samo dodavši kako odjel
u ovom slučaju je Computer Znanost za CS objekta.
I onda ja imam neku vrstu Most verzija da radi.
To se ne radi u IE9.
Dakle, to je razlog zašto sam želio pokazati kakav način -
što se to radi ispod haube.
No, možete ga postaviti na isti način
gdje Econ jednako funkciju Naravno primijeniti ove argumente
i onda kažu Econ dot Prototip jednako objekt dot CreateCourse
dot prototip.
Dakle, to je stvara novi objekt što je samo prototip
za tečaj, a zatim postavili odjel postoji.
Pa sad neka je samo ići postaviti debugger ovdje i kliknite na trčanje.
Tu smo.
Dakle CS164 možemo vidjeti Prototip lanac imamo
Svojstva koja su postavljen u konstruktor.
Tako su vrijednosti ovih koji su postavili i onda na prototip nizu
za CS objekt je imao odjel Computer Science postaviti.
A onda se na podlozi Prototip lanac,
ćemo onda imati sve metode i svojstva
koji su jedinstveni za Cilj naravno.
I onda imamo baza objekti.
Tako da nekako brzo Primjer prototipa lanca.
I kao što možete vidjeti ovdje, tu Dva su vrijednosti po odjelu.
Dakle, ne postoji odjel računalnih znanosti
i onda odjel Nije na popisu što sam rekao
kao zadanu vrijednost ovdje.
Dakle prototip lanac je zapravo samo pojedinačno
Popis veza.
I kao što se pokušava pronaći nekretninu,
to će početi u vrhunske vrijednosti razini.
Dakle, što je definirano u Funkcija konstruktor
i onda nekako ide prema dolje Prototip lanac od tamo.
Pa zato što je pronašao, pa -
ako je upravo ovdje, kažem CS50 dot odjel,
to će reći informatike.
Ali, ako kažem var -
[Pauza]
Ali, ako kažem humanističke znanosti jednako novi tečaj
i onda ja kažem humanističke dot odjel,
Vidjet ću odjel koji nisu navedeni jer je otišao na prvo -
Ja mogu pogledati na prototipu lanac ovdje zapravo.
Tako je otišao prvi tijeku prigovoriti i vidio nema ništa
Na prototipa lanca na ova razina za odjel
ili za vrijednosti robne tako onda skače na sljedeću razinu,
Naravno i izgled proslijediti tamo i ne nađe.
Dakle, to je samo nešto kao spušta od vrha prema dolje
i to je neka vrsta nešto što je jedinstveno
O JavaScript je da možete promijeniti bilo
od tih vrijednosti na bilo kojem trenutku.
Tako je u konstruktoru ili u Pojedinac metoda na objektu
ako želim postaviti ovo Odjel za nečim novim,
ili ako sam uopće želite postaviti bilo koji od ovih funkcija
koji su već postoje
na nešto novo, Ja sam slobodan to učiniti.
Dakle, upravo sada imam CS50 točku addLecture, izgleda kao da je.
A ako želim ga postaviti na CS50 addLecture samo jednaka
prazan funkciji.
Onda sada vidim da je Samo potpuno promijenila
koji niste u mogućnosti Za naredno jezika
gdje imate stroži Klasa se temelji na nasljedstvo
i sve je nekako postaviti.
JavaScript je jako, jako fleksibilan s obzirom na to.
OK, neka je skočiti natrag u slajdovima.
Dakle, ako za primjer da bi uvijek željeli funkciju
da imaju određenu ova vrijednost postavljena za to.
Možete pozvati funkciju dot zavežite
i postaviti ono vrijednost ovo bi trebao biti.
Možete razmišljati o tome kao o -
"Pokušavam se sjetiti Dobar primjer stvarni svijet, ali ",
ako želite zaštititi svoj kod
protiv nekoga potencijalno nazvavši ga s vrijednošću
da ne bi bilo to.
Kao na primjer AJAX Uzvratni poziv se kao višak ili pogreške.
Oni su obično se ne zove
s dobro semantička Vrijednost toga.
A ti si kao, "U redu, ja sam uvijek želim da se vrijednost
objekta naravno da ja radim sa.
Ili pogled koji sam rad s na moj broj
koji predstavlja ovaj DOM čvor, možete postaviti -
možete vezati kontekst toga i onda kada se to zove kasnije
by jQuery i to nema dobra vrijednost za to što ću staviti
to što si ga omeđeno.
Zatim tu je funkcija poziva se možete odrediti kontekst
i odrediti bilo varijablu broj argumenata.
A tu je i funkcija primjenjuje kojeg se može proći
u kontekstu te tada je bilo niz
ili argumenti objekata koji Spomenuo sam kao što vidite postoji.
A argumenti u bilo Funkcija koju nazvati,
možete samo upisati Riječ "argumenti"
i to ćete imati sve argumenti.
Ona ima "duljine" imovine
što je Kako vam argumenti bili zapravo šalju u metodama
budući da se u JavaScriptu možete sortirati poziva
s promjenjivim brojem argumenata.
To je korisno za govoreći: ako je to imao jedan argument,
zatim slijede ovaj put kod.
Ako je imao dva, možda žele slijediti drugi način.
To vam omogućuje da imaju stvarno dinamične API-ja za svojim metodama.
Možete misliti da s jQuery
kao kad imate Dolar je točka na i vežu.
I to nekako ne različite stvari
da li ste stavili jednu argument ili dva ili tri
ili ga početi s funkcije.
Ona koristi argumente svojstvo
i argumenti duljina u mnogo slučajeva
imati ovu čaroliju Funkcionalnost dogoditi.
Ono što se ne može učiniti s Argumenti se koristiti samo
po defaultu kao polje.
Tako da mogu reći argumente tri i postavite ga na nešto
kao što ste mogli pomoću Dodjela polje.
Možete koristiti - puno od metoda podvlačenje
za bilo zbirkama ili za rad s poljima,
možete proći u argumentima i to ćete shvatiti
da je to argumenti objekt i vrsta
od srediti za vas.
No, ako želite koristiti Argumenti koji su prošli
kroz funkcije kao polje,
možete koristiti podvlačenje dot dva niza.
Jedan od broja komunalnih funkcija
koji se grade u ukazati.