>> Olgu, täna, Ma lähen räägin
umbes JavaScript ja kuidas see on erineb teistes keeltes
et sa võiksid olla kasutatakse nagu PHP.
Nii on viimase loengu Esmaspäev, me rääkisime natuke
kohta, mis on sarnane, mis on tuttav vahel JavaScript
ja PHP või Python või Ruby või C või teistes keeltes
et sa oled juba tuttav.
Aga JavaScript see tegelikult on tõesti unikaalne stardi
objektil mudel, mis muudab see justkui täiesti erinev
kui enamik keeli, sa lähed tegeleda.
Nii funktsioonid on omamoodi
on alahinnatud kontseptsiooni JavaScript.
Nad on nii võimsam kui nad on teistes keeltes
sest nad saavad aastal - üks põhjus,
nad ei suuda olla määratud väärtused.
Nii siin me oleme var x võrdub funktsiooni
ja see on esimene klass väärtus, mis saab edasi
umbes nagu argument.
Nii et sa ei pea kuulutada funktsioon x
ja lihtsalt kasutada x selle ulatust.
Võite liigu väärtus x kõikjal üle, sa tead,
argumendina sisse teise funktsiooni
kus saab mooduli eksport David mainitud sõlme.
Nii et järgmine küsimus on,
et funktsioon on vastuväite JavaScript.
Nii saab tegelikult määrata omadused väärtused
Funktsiooni kohta ja lihtsalt ravida see nagu see on eesmärk.
Nii et kui te töötate jQuery, sa tead, et dollar
ja siis liigu valija sinna
ja tugineda selle funktsioonina.
Aga siis ka on dollar dot AJAX.
Ja see ei ole mingi mõtet, kui te arvate
ning funktsiooni nagu kõikidest midagi, mida saab tugineda
või helistada.
Aga JavaScript võimaldab teil määrata omadusi funktsioonid
staatilised omadused vaid x dot someProp
nagu ma juba seal.
Järgmine asi, mida me oleme lähe veidi rohkem
põhjalikult on asjaolu, et funktsioone saab ravida
nagu klasside JavaScript.
Seega on mõiste see uus operaator
mis loob uue astme funktsioon koos omamoodi
samasuguste klassi kehaga mis tuleb koos sellega
ja me läheme sinna veidi rohkem,
seda nimetatakse prototüüp.
Ja see on see, mida on marke JavaScript väga unikaalne võrreldes
teiste keelte mis klassi baasil,
JavaScript on prototüüp põhineb.
Ja siis just põhja seal,
funktsioon võib lihtsalt nimetada lihtsalt nagu me oleme harjunud.
Nii et see ei ole midagi uut.
Teine asi, mis on ainulaadsed
et massiivid on tegelikult objektid.
Nad ei ole nagu nad on PHP
kus sa lihtsalt luua uus massiiv.
See on tegelikult lühendvormina öelda, uue massiivi.
Ja massiiv on tegelikult alamklass objekti.
Nii et midagi erinev ja ma lähen
võtta veidi rohkem detail sellel.
Ja silumine võimete
JavaScript on tõesti tasakaalustamata nii palju kui mina olen näinud.
See on pilt Chrome Inspector
mis me kasuta ülejäänud
esitlus täna.
Ja saada seda, sa lihtsalt minna fail arendaja tööriistad
ja avatud Chrome Inspector või saate parema nupuga
ja klõpsake nuppu Kuva element I arvan, et see on HTML leht
või ma arvan, et see käsk variant J avab selle üles.
Aga me läheme sinna ja te saab tegelikult määrata murdepunktid
nagu näed läbi JavaScript koodi ja sorteeri
ning hinnata, mida kohalik muutujad, mida väärtus
see on, ning see teeb nii lihtsam siluda koodi.
Ja ei - see ei ole sunnitud brauseri-side code
kuid tegelikult võite käivitada näiteks
Selle Chrome Inspector Teie teenistuses pool kood
mis on tõesti kena, sest sa võimalik astuda läbi rida-realt
kui taotlus on oma server ja vaata, mis juhtub
ja mängida muutujad konsooli siin.
Nii nagu ma mainisin, JavaScript on prototüüp-põhine keel
mis tähendab, et on olemas komplekt vaikeväärtusi, mis on omamoodi
peidetud iga funktsioon
objektis dot prototüüp vara.
Nii et see on omamoodi räsi lihtsalt erinevaid vaikeväärtusi
et kui sa tugineda toimima uus märksõna,
need on sätestatud vaikimisi funktsioonid
mis on saadaval kohta näiteks.
Nii et tegelikult on tõesti tõhus -
see on tõhus viis luua objekte mälu tark
sest JavaScript Pikkus on ainult jälgida
prototüübi objekti.
See omamoodi osutab, et
kui sa cretae uus astme klassis.
Ja sa võid ka jäljendada pärand Nagu teada
klassi baasil keeles kus pead sorteerida
Umbes nagu see laieneb, et laiendatakse, et saate matkida
et JavaScript kaudu, mida nimetatakse
prototüüp kett.
Ja me näeme näiteid sellest.
Seega, kui teie - jQuery pluginaid tegelikult nad soovitavad jQuery
autorid kasutada dollar dot fn lisada funktsionaalsust
et jQuery library.
Ja me tegelikult toimub hüpata - Niisiis, sellel leheküljel,
meil on dollar - Ma lisatud jQuery.
Ja kui sa dollar dot konsool
mis ma mainisin tuues sind läbi käsk shift J
või lihtsalt läheb meelest Arendaja, Developer Tools
ja läheb Allikad tab.
[Kuuldamatu Märkus]
Oh kindel. Kui ma alustasin kirjuta muutuja,
see on auto-täita mulle mis on saadaval seal.
Nii et ma kirjutada dollar ja ma ei vaata Arvan Chrome on mõned
sisseehitatud dollari dollar ja dollari x.
Nii nüüd ma tahan, et dollar ja panin dot.
Ja siis see näitab mulle kõik omadused
mis on saadaval kohta jQuery objekti.
Aga kui ma teen dollar dot prototüübi
Nüüd vaata kõiki meetodeid et ma olen harjunud kasutama
kui mul on dollar, valija ja siis ma kett maha, et koos,
sa tead, lisada klassi või lisada või hägustada või mõni muu taoline.
Need on kõik tegelikult prototüübi
mis kapoti all jQuery luuakse uus eksemplar ise
ja see justkui varjab kõik need andmed sinult.
Seega punkt, et ma olin tegemisel tagasi siia
koos funktsiooni nad tegelikult varjata prototüüp sinult
ja lihtsalt alias see et dollar dot fn.
Nii et enamik inimesi tegelikult ei saa aru
et on prototüüp kapoti all see on -
et saab kasutusele võtta ja lisafunktsioonidega
iga jQuery näiteks kui soovite.
Nii "uus" operaator on tõesti omamoodi raske
mõista alguses.
Kui te helistate funktsiooni "new"
see on täiesti erinev viis helistades funktsioon
kui sa just helistas see lihtsalt.
Nii "uus" ettevõtja loob nn uue astme
objekti või uue astme, võite mõelda
Objekti klassina.
Ja kui see juhtub, väärtus Käesoleva mis võib olla tuttav
koos jQuery, nad omamoodi seada see
et kõik, mis on mugav ajal.
Tavaliselt seadke see praegune DOM sõlme, et sa oled
sest sa lähed läbi nagu iga või midagi sellist.
Nemad - See väärtus peaks olevat väärtust näiteks
et teil on loodud "uus" mis sisaldab kõike,
prototüübi kett ja kõik meetodeid, et sa leiad
kui prototüüp omadused.
Nii et see sõltub sellest, kuidas funktsiooni nimetatakse,
mida väärtus see on.
Ja see on nii segane Kui sa oled uus JavaScript.
Aga iga funktsiooni nimetatakse on - on selle väärtuse juures.
Nii et isegi kui te ei ole loonud uus isend midagi,
et see on eeldatud olema ülemaailmne.
Või võite helistada funktsioon kõne kasutamine meetod
kus kohaldatakse meetodit JavaScript.
Saate funktsiooni ja täpsustada, mis see peaks olema.
Nii saate teha seda dünaamiline, mis on tõesti võimas
vaid ka võimaldab teil teha asju, mis võib olla eksitav
ja segane teiste arendajate
kui nad ei kasuta asjaolust.
Ja jQuery väidaksin muudab veelgi rohkem segadust
muutes mugav ja milles see
praeguse DOM sõlme.
Aga lihtne reegel on meeles pidada mida väärtus on see
kui otsite
kell funktsionaalne kõne mida on jäänud dot.
Nii et kui teil on objekt
ja see on midagi, dot midagi on funktsioon
et helistate siis esimene väärtus on see väärtus
see on.
Nii et siin on kood näiteks
kus ma loon uus objektliteraal
mis on lihtsalt objekti loodud lokkis traksid
ja ma panen nime Bob
ja siis on mul sayName meetod siin, mis -
nii sees sayName kui ma x dot sayName,
väärtus on võrdne x, sest vasak
dot on x. Seega, kui Ma nimetan seda x dot sayName,
ta ütleks Tere Bob.
Ja siis veel üks näide
kus ma olen tegelikult määrates x dot sayName funktsioon
Lisa muutuja Y mis nagu mainisin
JavaScript sa saab määrata funktsioonid
muutujad, kui soovite, see on tõesti paindlik, et viis,
kuid nüüd, kui ma kutsun Y, ta kaotas kontekstis x.
Nii et see on nüüd globaalne või kui oled range režiim,
Usun, et see on null või määramata.
Aga - Nii Y ei ole see, mida sa oled ootasin siin kui otsite
x ja sa lähed helistada sayName,
ootate seda nime peaks olema Bob.
Aga kui sa said hakkama objekti ja nimetas seda
iseenesest on nüüd globaalne.
Ja see, mida ma olin viitavad kui näed dollar dot seda,
siis sageli ei mõtle mis tegelikult toimub.
Aga jQuery omamoodi on nende enda domeeni erialakeele
tegeleb see ja see pole see, mida sa oled harjunud
et JavaScript.
Ja ma juhtida sellele tähelepanu sest see on tõesti oluline
kirjutamiseks hästi struktureeritud objektorienteeritud kood
JavaScript on tõesti hea ülevaade ja arusaam
kuidas see toimib ja kuidas objekti mudeli tööd
ja kuidas uus operaator töötab.
Vastasel juhul saate lõpuks koos jQuery spagetid
kus kõik on omamoodi üle kogu koht
ja kaupleb ainult DOM.
Kui saate tegelikult kirjutada JavaScript
aastal süstemaatilise mood, see muudab palju lihtsamaks
töötada, sorteerida eraldi muresid
Euroopa tegeleva ajakohastamine DOM ja tegelevad
tegeliku loogika ja kood.
Võtame pilk Mõned näited umbes nii.
Nii et mul on mõned näited siin.
Nii et see on lihtsalt näide kasutades JavaScript objekti
ja lisades mõned funktsioonid see ja seejärel luua omamoodi
Umbes nagu miniatuurne rakendus.
Nii et see on väga lihtne tegelikult.
Ainuke asi, mis ta teeb, on algul ta küsib oma nimi.
Nii et ma ütlen, Tim ja siis võimalik muuta oma nime Bob.
Ja see on kõik see taotlus ei.
Aga mida ma tahan rõhutada välja, kuidas ta seda teeb.
Nii et mul on see nimi generaator objekti, millel on algus meetod
mis küsib kasutajalt oma nimi
lihtsalt nimetades seda askForName
mis siin see teeb kiire
kui nime ei pandud siis küsib ta uuesti
kutsudes seda askForName.
Ja siis, kui ta saab nime, see nõuab selle värskenduse nimi.
Nii et see seab siis kasutaja nimi h1 tag.
Ja kui nimi ei ole seadistatud, siis viskab vea.
[Kuuldamatu Märkus]
Oh kindel. Seega seab kasutaja nimi h1 tag
helistades setDisplayName mis seab HTML
JS nimi konteiner ja Ma prefixing kõik minu HTML
koos JS valijad lihtsalt sellepärast, see on hea harjumus
arvesse vaid teha see ei ole nii segane
kui te kasutate selektorid nagu ID-või klassid
nii stiili ja loogika
Teie JavaScript esiotsa rakendusi.
Sest kui sul on erinevad rühmad, kes töötavad
on koodi baasi ja sa on valija ei
et disainer otsustab muuta, sest See on -
ei tundu väga, nii et nad tahavad panna uus klass ja võtma
läbi sinu ja sa tugineda peal JavaScripti eesmärkidel
siis oma koodi murrab.
See on hea, et eesliide ja sorteeri
samasuguste namespace peaaegu JavaScript seotud klassid
või atribuutide eesliide JS.
Nii et see on üsna lihtne ja te näete
kõigil neil juhtudel ma olen kutsutakse tagasi käesoleva aasta lõpus.
Nii et see on hea harjumus sattuda,
teile seda kehtiv tagastatav väärtus.
In askForName ma ei sest see on loogiline
et sa saaksid nimi tagasi.
Aga mida see võimaldab sa siis teha
kui sa tagasi see uuendus Nime, ta naasis väärtus
kohta setDisplayName mis on tagastades väärtuse selles.
Ja see võimaldab teil sorteerida kett nagu sa oled harjunud
et jQuery tagastades Selle väärtust iga kord.
See tähendab, et praegune objektid
nii et võid kutsuda seda dot askForName dot setDisplayName
ja see hoiaks väärtus see ja saate
on kena kett seal.
Ja siis - nii Teine näide.
[Paus]
Hea küll.
OK. Nii lähme edasi ja avada konsool
ja minge mu allikad tab.
Me pop see välja tegelikult.
Nii et Chrome arendaja vahendid, mis ma mainisin,
on selles tükis paremal ja -
Sa näed seda stop märk kuigi vaikimisi on see must.
Aga kui sa hiirega üle, see ütleb: "Ära Peata erandeid.
Vajuta pause kõik erandid. "
Ja kui sellel klõpsata Jällegi, see muutub siniseks.
Ja nüüd igal ajal, et seal on viga visatud
Teie JavaScript koodi, siis see peatu punkti ja saate
hinnata, mis toimub.
Seega - ja see on tõesti kasulik kontseptsioon on umbes rõhutada.
Ja siis, kui klõpsate jälle selgub lilla
ja see on tavaliselt mida ma saan seda sisse
See ainult rikub kood kui on erand
et ei ole püütud.
Nii palju kordi jQuery jaoks Näiteks nad proovivad saagi
testida kas brauseri on mingi võime
ja jätkata sealt.
See on ainult siis, kui seal on viga
mis ei ole olnud püütud proovida saak.
Seega proovime ja esitama nimi, mis on tühi.
Nii et ma ei näe, et kood on nüüd peatatud
kell updateName meetod Ja ma ei saa hiirega üle nimed
ja vaata see on tühi tühi.
Seal see on võrdne tühjaks.
Nii et kui nime ei viska uus viga ja nüüd ma ei saa tagasi astuda
funktsiooni kaudu veerus ja ütlevad: "OK,
Kust see pärit on, "ja vaata, mis väärtus kliendile on.
Nii et see on askForName meetod,
setDisplayName start ja updateName.
Ja see on lihtsalt väga kasulik Nii näete, on kõik
muutujaid, mis on saadaval selle ulatuse kui ka
kui sulgemine muutujad, nii midagi, mis on suletud
Üle selle funktsiooni.
Ja ma näen, et - Mis väärtus kliendile on
ja mis väärtus on see.
Nii et see, sest me oleme jQuery on võrdne
praeguse DOM element.
Aga see on tõesti kasulik silumiseks kood
purunemist vigu niimoodi.
Teine tunnusjoon Chrome Inspector on
et igal hetkel võite kliki erinevaid jooni
reas ja siis see murdumine kohad
kus olete murdepunktid nad nimetatakse.
Nii et kui ma vajutan, line muutub siniseks.
Nii et lubage mul jätkata täitmise siin, OK, et murdis.
Ja nüüd lähme määratud nimi Alice ja vajuta Saada.
Nüüd ma näen isegi enne, kui see sai selle punktini,
ajakohastada kõike, see on nüüd lõpetas siin nii et ma ei näe
et minu see nimi on Alice ja siis ma saan jätkata -
andke mulle asendusostu lehekülge.
Olgu, nüüd, et see on algab uuesti alustada,
see on peatunud selles line ja ma näen
et nimi on praegu määramata.
askForName on mis toimiks see on, et see on ka sageli kasulik
kui teil on funktsioone, mis on pärit eri faili
või erinevates kohtades koodi, saate näha, kus see on,
ja siis hüpata, et siis vali see.
Nii hea, et saada harjumuseks kasutada silumisriistad
, mis ei ole lihtsalt lohutada dot samamoodi.
OK, nii et võtame pilk Teine näide
mis teeb rohkem kasutada prototüüpe olin vihjas.
Nii selles näites
me luua uus funktsioon nimega CS
ja see on kapitaliseeritud nii konventsiooni standard
JavaScript on kas funktsioon peaks olema kasutatud
nagu konstruktori, vastandina
lihtsalt normaalne funktsioon, siis ära seda.
Nii et mul on kapitali CS ja see võtab muutuja courseId
ja courseTitle mis Ma seadsin selle courseId,
see courseTitle ehitaja.
Ja siis ma seada ka õpilased ja loengute tühjad massiivid.
Seega põhjus, et te -
OK, nii et prototüüp omadused seejärel määratletud
siin - nii et mall on lihtsalt alakriips
template, alakriips template on nii, et saate -
sarnaseid malle et Taavet oli mainitud
serveris, saate lihtsalt kirjutada script tag
mis ei ole JavaScript script aga tekst HTML
ja mida ma teen jQuery on -
see ei hoia neid avatud, jah, seal läheme.
JQuery, on juba HTML väärtus mall
ja siis töötab ta läbi rõhutada kasuliku raamatukogud
template mootorit.
Nii dokumentatsioon sest see on siin
all kasuliku template
kuid põhimõtteliselt saab lugeda natuke rohkem infot.
Aga ta hindab seda string ja lülitab see funktsioon
mida me saame siis liigu andmed sisse ja ta helistada dünaamiliselt.
Järgmise kahe meetodi mul on addStudent ja addLecture.
Need lihtsalt lisada need sise-massiivid, et olen määratud
ehitaja ja siis muuda meetod.
Niisiis, oletame, luua uusi Näiteks CS nimega 164
mis on selle kursuse nr 164 ja pealkiri.
Ja siis CS50 mis on CS50 ja tutvustus CS1
ja seejärel lisada mõned loenguid üliõpilastele
ja siis helistada CS50 muuta.
Ja kui ma saan koodi, nii Ma teen, et koos Eval.
Sa kunagi ei soovi kasutada Eval, aga ma olen lihtsalt omamoodi
võtta kõik JavaScript et siin on
ja käivitamata lennult.
See muudab sellesse malli neid uusi juhtumeid
CS klass, mis on omadused, et me oleme kadunud
läbi ja teha addLecture ja addStudent iga.
Ja nagu ma mainisin sest ma teen sulle tagasi seda,
Ma ei saa tegelikult keti need addLecture ja addStudent kõned
ja siis see töötab sama hästi.
Teine funktsioon JavaScript see on isegi kasulikum
serveripoolne kus sa tõesti igal ajahetkel
Kui teie taotlus saab suurem ei tea, kus sa oled
ja see on raskem määrata individuaalsete murdepunktid
et mainisin Chrome Inspector on
kasutada siluri märksõna.
Nii et see on lihtsalt D-E-B-U-G-G-E-R.
Ja kui paned siluri märksõna kood
ja sul - seal läheme, kaks Gs.
Kui paned siluri märksõna kood
ja näed siluri
nagu Chrome Inspektor siin
või serveripoolne Chrome Inspektor, see ütleb JavaScript
peatab täitmise kohta, et liin koodi ja siis saate
sammult läbi ülejäänud täideviimise koodid.
Nii et kui ma vajutan run kood siin on nüüd peatusteta
selles siluri liin ja saan vaata OK, siin on väärtus CS50
ja see sai muidugi pealkiri, muidugi ID,
see ju ei ole loenguid õpilastele.
Ja siis ma ei saa astuda läbi kogu addLecture,
Ma näen, et see surudes on need loengud,
hiirega üle, et "Hello World".
Ma ei saa tegelikult sisse konsooli teha nii see on seatud
praeguse objekti mis sa sisse
See loeng on "Hello World".
Ja pidage samm läbi nii palju kui tahan.
Kui ma ei taha astuda
arvesse funktsioon kõne, sest Ma tean, kuidas see läheb
teha laskumist addLecture, seal on see nupp siin
mis ütleb: "Astu üle järgmise funktsioon kõne, "ja nii ma ei lähe
punktini, olid mul võibolla tea midagi.
Nagu näiteks 164 muuta.
Nii et siinkohal on see kavatse olla muutunud.
Ma näen seda malli on koostatud mall.
Ma näen selles punktis I peab olema kaks õpilast
ja kaks loengut.
Ja siis on prototüüp kett, et ma viitasin.
Nii vaikimisi, et tuleb koos lihtsalt objekt
JavaScript üldiselt
Kaasas kaks string väärtus ehitaja.
Ja siis need, mis Olen lisatud ise
koos addLecture, addStudent ja seejärel andmed
mis on unikaalne selles näiteks klassi
kui see oli keeldumise uue märksõna.
Teeme lihtsalt üks järjekordne näide selle
ja siis me astuma teatud rohkem huvitavaid asju
serveripoolne.
Lähme edasi ja avage see viimane näide, mis on -
Vaatame, kui kood on?
Ma ei tea, kus see läks.
OK, me võiks lihtsalt vahele üle selle koodi siis tegelikult -
oh oota, ma arvan, et ma jäin laadilehe koodi.
OK, nii teeme see veidi suurem.
Selles näites Ma näitan veidi rohkem seadistus
kuni prototüüpi kett,
nii loomise pärandi koos JavaScript.
Nii selles asjas oleme Kataloog, mis läheb
et arvatavasti säilitada mitu kursust.
Ja nii kataloogi on addCourse meetodeid.
Nii et see kontrollib, kas kursus mis on vastu võetud, on näiteks
muidugi kui tugineda uue märksõna.
Nii et kui te proovida ja saata
midagi erinevat, see ütleb teile:.
Render meetod, mis muuta iga kursused
koostades selle malli alla.
Ja meil on muidugi mis ühendus
sel juhul baasklass individuaalne osakond kursused.
Ja selle asemel, millega iga
Kursuse dot prototüüp dot meetod
või vara kasutades laiendada abimees alakriips raamatukogu
sorteerida kõne laiendada prototüüp kõik
Nende omadused, mis on kasulik, veidi lihtsam lugeda.
Ja siis siin teed Mis tuntud milles
kuni prototüüpi kett.
Seega see on tegelikult vähe keeruline inimesed esimesel
ja isegi veel seda teinud mõnda aega, see on omamoodi raske
wrap pea ümber.
Kuid ei lase, et hirmutada teid.
Nii et ma olen loomisel uus -
täiesti uue vastu siin, CS.
Ja ehitaja
Ma räägin muidugi kohaldatakse seda argumenti.
Nii argumendid on eriline väärtus Ma arvan, et sa võiks seda nimetada
JavaScript, märksõna, mis on kõik
ning kõike, mis on edasi mööda on argumendid
et funktsioon on saadaval argumentidega helistada,
argumentidega märksõna.
Nii nagu ma helistan koos muidugi dot kohaldatakse
see on praeguses kontekstis kellega CS on kutsutud.
Nii et kui ma tugineda seda uute see on - see on väärtus CS.
Ja ma ütlen nimetame seda Loomulikult meetod siin.
Oh sorry - nimetame seda Loomulikult meetod siin
kuid seatud väärtuseks olla mis tahes väärtus
selle kohta on siin.
Nii kohaldatakse märksõna võimaldab teil omamoodi muuta riik
Selle, mis on see, kuidas jQuery lastakse sorteerida lüliti
välja see on teile sa lähed läbi
ja teeb DOM elemente asemel jQuery objekti.
Nüüd ma panen ajutine funktsioon
mis köidaksid prototüüp muidugi.
Ja omamoodi seada tema prototüüp
ja seejärel määrake prototüüp CS funktsioon objekt
et uus isend seda.
Nii et põhimõtteliselt ma olen öeldes selle asemel -
kui ma siin tegin CS dot prototüüp võrdub uue kursuse.
Siis oleks kutsudes kõik
selles ehitaja,
mida ma ei taha tingimata tahtnud.
Nii et kõik, mida ma teen on sort luua peaaegu
nagu asendusemadus funktsioon, mis on kursused prototüüp
peal ja omamoodi matkivad prototüüp -
muidugi, kuid ei tee kõik ehitaja
ja määrata, et prototüüp.
Ja siis ma lihtsalt Lisades, et osakond
sel juhul on arvuti Teadus CS objekti.
Ja siis on mul omamoodi silla versioon tehes.
See ei tööta IE9.
Nii et miks ma tahtsin näidata omamoodi kuidas -
Mida see teeb kapoti alla.
Aga saate seda üles samamoodi
kus Econ võrdub funktsiooni Loomulikult kehtivad need argumendid
ja siis öelda Econ dot prototüüp võrdub objekti dot CreateCourse
dot prototüüp.
Nii et see loob uue objekti mis on lihtsalt prototüüp
jaoks muidugi ja siis määratud osakonna seal.
Nüüd lähme lihtsalt minema seada siluri siin ja klõpsa Käivita.
Niimoodi.
Nii CS164 näeme prototüüp kett meil
omadused, mis olid sätestatud ehitaja.
Nii need väärtused, mis olid seatud ja siis prototüüp kett
jaoks CS objekti tal osakond Computer Science määrata.
Ja siis on selle aluseks olev prototüüp kett,
Siis on kõik meetodid ja omadused
mis on ainulaadne Kursuse eesmärk.
Ja siis on meil baasi objektide kohta.
Nii et omamoodi kiire näiteks prototüübi kett.
Ja nagu näete siin, seal kaks väärtust kohta osakonda.
Seega on osakond arvutiteadus
ja siis osakond ei ole loetletud mis ma ütlesin
vaikimisi väärtus siin.
Nii prototüüp kett on tegelikult vaid üksikult
link nimekirja.
Ja kui ta püüab leida vara,
siis see algab tipptasemel väärtus.
Mis on määratletud ehitaja
ja siis mingi minna prototüüp kett sealt.
Niisiis, kuna ta leidis, et -
kui siin, ma ütlen CS50 dot osakonna
see ütlen Computer Science.
Aga kui ma ütlen, var -
[Paus]
Aga kui ma ütlen, humanitaar- võrdub uue kursuse
ja siis ma ütlen humanitaarteaduste dot osakond,
Näeme osakond ei ole loetletud sest see läks esimene -
Ma võin vaadata prototüüp ahel siin tegelikult.
Nii ta läks esimese kursuse vastuväiteid ja nägin seal midagi
prototüübi keti sellel tasemel osakond
või osakonna väärtustele siis hüppab järgmisele tasemele,
muidugi ja välimus edastada seal ja leiab ta.
Nii see lihtsalt omamoodi nagu läheb ülevalt alla
ja see on omamoodi midagi, mis on ainulaadne
umbes JavaScript on et saab muuta mis tahes
Nende väärtuste igal ajahetkel.
Nii et ehitaja või individuaalne meetod objektil
kui ma tahan, et seada see osakonna midagi uut,
või kui ma isegi tahan, et seada Iga sellise funktsiooni
mis on juba olemas
midagi uut, Ma olen vaba tegema.
Nii et just nüüd on mul CS50 dot addLecture, näeb välja selline.
Ja kui ma tahan, et seada see CS50 addLecture lihtsalt võrdne
tühi funktsioon.
Siis nüüd ma näen, et see on lihtsalt täiesti muutunud
mis te ei saa teha teise keele
kui teil on rangem klass aluseks pärandi
ja kõik on justkui loodud.
JavaScript on väga, väga paindlik, mis puudutab seda.
OK, olgem hüpata tagasi aastal slaidid.
Nii et kui näiteks sa oleks alati meeldib funktsioon
olema eriti Selle väärtus on see.
Teil on võimalik helistada funktsioon dot köitma
ja määrata, mida väärtus ning see peaks olema.
Sa ei mõtle seda -
"Püüan mõelda hea reaalses maailmas näiteks vaid "
kui soovite, et kaitsta oma koodi
vastu keegi potentsiaalselt kutsudes seda väärtust
et ei oleks seda.
Nagu näiteks AJAX tagasihelistamisse nagu liigne või viga.
Need on tavaliselt ei kutsutud
hea semantilise väärtuseks.
Ja sa oled nagu, "OK, ma alati tahan, et see oleks väärtust
Kursuse eesmärk et ma töötan koos.
Või vaadata, mis ma olen töötavad minu kood
mis kujutab käesoleva DOM sõlme, saate -
võite siduda seoses käesoleva ja siis, kui ta on kutsutud hiljem
poolt jQuery ja see ei pea hea raha selle ta torkan
mida sa piirneb seda.
Siis on funktsioon kõne oli saate määrata kontekstis
ja täpsustatakse muutuja mitmeid argumente.
Ja siis on funktsioon kohaldada mis saab edasi
kontekstis ja siis kas massiiv
või argumente objekte, mis Mainisin kui näed seal.
Ja argumendid igal funktsioon, mis te helistate,
saad lihtsalt kirjuta sõna "argumente"
ja see saab olema kõik argumendid.
See on "pikk" kinnisvara
mis on see, kuidas võib argumentide tegelikult edasi selle meetodid
alates JavaScript saate sortida kõne
Muutuva numbrid argumente.
See on kasulik öelda kui see oli üks argument,
järgige seda koodi tee.
Kui ta oli kaks, siis võib tahavad jätkata muul viisil.
See võimaldab teil on tõesti dünaamiline APIs oma meetodeid.
Sa ei mõtle et koos jQuery
nagu siis, kui olete dollar dot või siduda.
Ja see justkui ei erinevaid asju
kas paned ühe argument, kaks või kolm
või alustada selle funktsiooni.
Ta kasutab argumendid kinnisvara
ja argumendid pikkus palju juhtumeid
on see maagia funktsionaalsus juhtuda.
Asjad, mida sa ei saa teha argumendid on seda kasutada ainult
vaikimisi massiivi.
Nii saab öelda argumendid kolm ja pani midagi
kui sa võiksid kasutades array loovutamisega.
Võite kasutada - palju on alakriips meetodid
kas kogude või töötamiseks massiivid
saab edastada ka argumente ja see saab aru,
et see argumendid objekt ja sorteerida
ning hoolitseb selle eest.
Aga kui soovite kasutada argumendid, mis edastatakse
läbi funktsiooni array,
saate alakriips dot kaks massiivi.
Üks number kasuliku funktsioone
mis ehitada rõhutada.