>> Në rregull, kështu që sot, Unë jam duke shkuar për të folur
rreth JavaScript dhe se si është e ndryshme nga gjuhë të tjera
që ju mund të jetë përdoret për të si PHP.
Pra, në leksionin e fundit mbi E hënë, kemi biseduar pak
për atë që është e ngjashme, ajo që është njohur mes JavaScript
dhe PHP ose Python ose Ruby ose C ose gjuhë të tjera
se ju jeni tashmë të njohur me të.
Por JavaScript ai në fakt ka një qëndrim të vërtetë të veçantë
në modelin e objektit që e bën kjo lloj krejtësisht të ndryshme
se shumica e gjuhëve që ju jeni do të marrë me të.
Pra, funksionet janë një lloj
i underappreciated koncept në JavaScript.
Ato janë mënyra më të fuqishme se ata janë në gjuhë të tjera
sepse ata mund të në - për një arsye,
ata janë në gjendje të jenë të përcaktuar si vlera.
Pra, këtu kemi var x është e barabartë me funksionin
dhe kjo është një klasë të parë vlerë që mund të jetë kaluar
rreth si argument.
Pra, ju nuk keni për të deklarojnë funksion x
dhe vetëm përdorni x në atë fushë.
Ju mund të kalojë vlerën e x kudo në të gjithë, ju e dini,
si argument në një tjetër funksion
ku ju mund të eksportit modul si David përmendur në nyje.
Pra, pika tjetër është
se një funksion është një objekt në JavaScript.
Kështu që ju mund të vendosni në të vërtetë Prona si vlerat
në një funksion dhe vetëm trajtojnë ajo pëlqen kjo është një objekt.
Pra, kur ju punoni me jQuery, ju e dini, se dollari
dhe pastaj ju të kalojë një përzgjedhës në të
dhe kërkoj atë si një funksion.
Por pastaj ju gjithashtu kanë dollar dot AJAX.
Dhe kjo nuk lloj kuptim në qoftë se ju mendoni se
i një funksioni vetëm si duke u diçka që ju mund të kërkoj
ose telefononi.
Por JavaScript ju lejon për të vendosur prona në funksionet
pronat si statike me vetëm x dot someProp
siç theksova atje.
Pika tjetër të cilën ne jemi të do të shkojë në pak më shumë
në thellësi është fakti se funksione mund të trajtohet
si klasa në JavaScript.
Pra, nuk është koncepti i këtij operatori të ri
i cili krijon një shembull të ri të funksion së bashku me një lloj
e si trupi klasit-si e cila vjen së bashku me të
dhe ne jemi duke shkuar për të shkuar në të pak më shumë,
ajo që quhet prototip.
Dhe kjo është ajo që e bën JavaScript shumë të veçantë krahasuar
në gjuhë të tjera të cilat janë të bazuara klasë,
JavaScript është një prototip i bazuar.
Dhe pastaj vetëm në fund atje,
Funksioni i vetëm mund të quhet thjesht si ne jemi duke përdorur për të.
Pra, kjo është asgjë e re.
Një tjetër gjë që është e veçantë është
se vargjeve janë në të vërtetë objekte.
Ata nuk janë si ata janë në PHP
ku ju vetëm të krijojë një koleksion të ri.
Kjo është në fakt një stenografi për të thënë grup të ri.
Dhe array është në fakt një nënklasa e një objekti.
Pra, kjo është diçka të ndryshme dhe unë do të shkoj
në pak a shumë detaje mbi këtë.
Dhe aftësitë debugging
me JavaScript janë me të vërtetë i pashoq aq sa unë kam parë.
Kjo është një screenshot i Inspektorit Chrome
të cilat ne jemi duke shkuar për të përdorur për pjesën tjetër
e prezantimit sot.
Dhe për të marrë në këtë, ju vetëm shkojnë të paraqesë mjetet zhvilluesi i
dhe të hapur Chrome Inspector ose ju mund të drejtë të klikoni
dhe klikoni element tregojnë I Mendoj se është në faqen HTML
ose unë mendoj se është e komandës opsion J hap këtë ide.
Por ne do të shkojnë në këtë dhe ju mund të vendosni në të vërtetë breakpoints
si ju jeni që kalon nëpër kodin JavaScript dhe lloj
e vlerësojnë atë lokal variablat janë, çfarë vlera
i kësaj është dhe kjo e bën të Mënyra më e lehtë për kodin debug.
Dhe don 't - kjo nuk është e detyruar të kodit browser me anë
por ju mund të vërtetë drejtuar një shembull
i këtij Inspektorit Chrome për Service Kodi anën tuaj
e cila është me të vërtetë i zoti për shkak se ju mund të hap përmes linjës nga linjë
si një kërkesë vjen në tuaj server dhe të shohim se çfarë po ndodh
dhe të luajë me variablat në tastierë poshtë këtu.
Pra, siç e përmenda, JavaScript është një gjuhë prototip me bazë
që nënkupton se ka nje set nga vlerat e prezgjedhura të cilat janë lloj
i fshehur për çdo funksion
në objekt dot prototip pronës.
Pra, kjo është lloj i një hash të Vlerat vetëm të ndryshme e parazgjedhur
se kur ju kërkoj një funksionojnë me fjalen ri,
ata janë të vendosur nga parazgjedhur si funksione
që janë në dispozicion për shembull.
Kështu që në të vërtetë është me të vërtetë efikas për -
kjo është një mënyrë efikase të duke krijuar objekte kujtesës mençur
sepse JavaScript Runtime ka vetëm për të mbajtur nën
i prototipit të objektit.
Ai lloj i tregon se
kur ju cretae një të ri shembull i një klasë.
Dhe ju gjithashtu mund të imitoj trashëgimia si dihet
në gjuhët klasë me bazë ku ju keni lloj
e si një kjo shtrihet që, shtrihet që ju mund të imitoj
se në JavaScript me atë që quhet
zinxhir prototip.
Dhe ne do të shohim shembuj për këtë.
Pra, nëse tuaj - plugins jQuery në fakt ata rekomandojnë jQuery
autorët për të përdorur dollar dot fn për të shtuar funksionalitetin
në bibliotekë jQuery.
Dhe ne jemi të vërtetë do të hidhen në - Pra, në këtë faqe,
ne kemi të dollarit - I përfshirë jQuery.
Dhe në qoftë se ju bëni dollarit dot në tastierë
cilën e përmenda sjellë ju deri me ndërrime të komandës J
ose vetëm do të Shiko, Mjete Zhvilluesi, Zhvilluesa
dhe të shkojnë në tab Burimet.
[Padëgjueshëm Vërejtje]
Oh i sigurt. Kështu që kur kam filluar të shkruani një ndryshore,
është e auto-përfunduar për mua atë që është në dispozicion atje.
Kështu që unë shtypur në dollarë dhe unë mund të shih Unë mendoj se Chrome ka disa
ndërtuar në dollar, dollar dhe dollarit x.
Deri tani unë vetëm dua dollar dhe kam vënë në një pikë.
Dhe atëherë ajo tregon mua gjitha pronat
që janë në dispozicion në objektin jQuery.
Por nëse i bëj dollar dot prototip,
Unë tani të parë të gjitha metodat se unë jam i përdorur për të përdorur
kur kam dollar, përzgjedhës dhe pastaj unë zinxhir off se me,
ju e dini, shtoni klasë ose append ose turbullira ose ndonjë si.
Ata janë të gjithë të vërtetë në prototip
e cila nën kapuç jQuery krijon një shembull të ri të vetë
dhe ai lloj i fsheh të gjitha ato detaje nga ju.
Prandaj ideja që unë kam qenë duke e bërë përsëri mbi këtu
me funksionin, ata në të vërtetë fsheh prototip nga ju
dhe vetëm alias atë të dollarit dot fn.
Kështu që shumica e njerëzve në të vërtetë nuk e kuptojnë
se ka një prototip nën that's kapuç -
që ju mund të trokitje e lehtë në dhe shtoni funksionalitet shtesë
për çdo rast jQuery në qoftë se ju dëshironi.
Kështu operatori "i ri" është me të vërtetë lloj i vështirë
për të kuptuar në fillim.
Kur ju telefononi një funksion me "të reja",
kjo është një krejtësisht të ndryshme Mënyra e thirrjes së funksionit
si në qoftë se ju vetëm të quajtur ajo qartë.
Kështu operatori "i ri" krijon atë që quhet një shembull i ri
i një objekti apo një e re shembull i, ju mund të mendoni
e objektit si një klasë.
Dhe kur kjo ndodh, vlera ky i cili mund të jetë i njohur
me nga jQuery, ata lloj të vendosur këtë
për çdo gjë që është e përshtatshme në kohë.
Ata zakonisht e vendosur atë në nyje e tanishme DOM që ju jeni
më si ju jeni duke kaluar si secili apo diçka të tillë.
Ata - Kjo vlerë është menduar të jenë vlera e shkallës
që ju të krijuar me të "re", e cila përfshin çdo gjë
në zinxhirin prototip dhe të gjitha nga metodat që ju do të gjeni
si pronat prototip.
Pra, kjo varet se sa një funksion quhet,
çfarë vlera e kësaj është.
Dhe kjo është me të vërtetë konfuze në qoftë se ju jeni e re në JavaScript.
Por çdo funksion që quhet ka një - ka në këtë vlerë.
Pra, edhe në qoftë se ju nuk e keni krijuar një shembull i ri për diçka,
se kjo është supozuar të jetë globale.
Ose ju mund të telefononi një funksion duke përdorur metodën e thirrjes
ku aplikoni metodën në JavaScript.
Ju mund të funksionin dhe specifikojë se çfarë kjo duhet të jetë.
Kështu që ju mund të bëni atë dinamike, e cila është me të vërtetë i fuqishëm
por gjithashtu ju lejon të bëni gjëra të cilat mund të jenë mashtruese
dhe konfuze për të zhvilluesve të tjera
në qoftë se ata nuk janë të përdorin të faktit.
Dhe jQuery, unë do të argumentoja e bën atë edhe më konfuze
duke e bërë atë të përshtatshëm dhe vendosjen e atë
në nyjen e tanishme DOM.
Por rregull i thjeshtë për të kujtuar çfarë vlera e kësaj është
kur ju jeni në kërkim
në një telefonatë është funksional çfarë ka lënë të dot.
Pra, nëse ju keni një objekt
dhe kjo është diçka dot diçka është funksioni
se ju jeni duke bërë thirrje më pas Vlera e parë është ajo që vlera
e kjo është e.
Kështu që këtu është një shembull kodi
ku unë jam duke krijuar një objekt i ri i fjalëpërfjalshëm
e cila është vetëm objekt krijuar me formatimin e teksteve kaçurrel
dhe unë jam vendosjen e emrit të Bob
dhe pastaj unë kam një sayName Metoda këtu cilat -
kështu që brenda këtij sayName në qoftë se unë do të x dot sayName,
vlera e kjo është e barabartë për x sepse majtë
të pikës është x. Pra, nëse Unë e quaj atë x dot sayName,
ajo do të thonë hello Bob.
Dhe pastaj një tjetër shembull
ku unë jam në të vërtetë caktimin x dot sayName, funksioni
me Y ndryshueshme, e cila siç e përmenda
në JavaScript ju mund të caktojë funksionet
të variablave sa herë që ju dëshironi, kjo është me të vërtetë fleksibël në këtë mënyrë,
por tani, kur unë e quaj Y, është e humbur kontekstin e x.
Pra, kjo tani është globale apo në qoftë se ju jeni në mënyrë të rreptë,
Unë besoj se është null ose të pacaktuar.
Por - Pra Y nuk është ajo që ju jeni duke pritur këtu në qoftë se ju jeni në kërkim
x dhe ju do të jeni për të thirrur sayName,
ju jeni duke pritur këtë emër është menduar të jetë Bob.
Por nëse ju nxorrën atë jashtë objekti dhe e quajti atë
në vetvete, kjo tani është globale.
Dhe kjo është ajo që unë u përmendur kur ju shikoni dollarit dot këtë,
ju shpesh nuk e mendojnë për çfarë është në të vërtetë ndodh.
Por jQuery lloj ka e tyre vet domain-e të Caktuar gjuhën
për t'u marrë me këtë dhe kjo nuk është ajo që ju jeni duke përdorur
për në JavaScript.
Dhe unë theksoj këtë, sepse është e vërtetë e rëndësishme
për të shkruar mirë-strukturuar orientuar objekt Kodi
në JavaScript të vërtetë kanë një kuptim të mirë dhe rrokje
e si punon kjo dhe se si Modeli objekt punon
dhe se si punon operatori i ri.
Përndryshe, ju do të përfundojë me spageti jQuery
ku çdo gjë është lloj të gjithë vendin
dhe vetëm që kanë të bëjnë me DOM.
Nëse ju mund të vërtetë shkruani javascript
në një mënyrë më të strukturuar, kjo e bën atë shumë më e lehtë
për të punuar me të, për të zgjidhur të ndarë shqetësimet
e që kanë të bëjnë me përditësimin e DOM dhe që kanë të bëjnë
me logjikën aktuale dhe kodin.
Pra, le të marrin një vështrim në a pak shembuj rreth se.
Pra, unë kam disa shembuj këtu.
Pra, kjo është vetëm një shembull i thjeshtë e duke përdorur një objekt JavaScript
dhe duke shtuar funksione pak për të dhe pastaj duke krijuar lloj
e si një aplikim miniaturë.
Pra, është shumë e thjeshtë në të vërtetë.
E vetmja gjë që ajo nuk është e në fillim ajo bën emrin tuaj.
Kështu që unë do të them Tim dhe pastaj ju mund të ndryshojë emrin tuaj për Bob.
Dhe kjo është e gjitha kjo Aplikimi bën.
Por ajo që unë do të doja të theksoj se është se si ajo e bën këtë.
Kështu që unë kam këtë gjenerator emrin objekt i cili ka një metodë e fillimit
i cili pyet përdoruesin për emrin e tyre
vetëm duke e quajtur këtë askForName
e cila këtu është bën e shpejtë
në qoftë se emri nuk është caktuar atëherë ai e kërkon atë përsëri
duke e quajtur këtë askForName.
Dhe pastaj një herë ajo merr emrin, ajo e quan këtë emër update.
Pra, kjo pastaj vendos Emri përdorues në tag h1.
Dhe në qoftë se emri nuk është vendosur, ajo hedh një gabim.
[Padëgjueshëm Vërejtje]
Oh i sigurt. Pra, ajo përcakton Emri përdorues në tag h1
duke telefonuar setDisplayName e cila përcakton HTML
në emrin enë JS dhe Unë jam prefixing gjitha HTML tim
me Selectors JS vetëm për shkak se kjo është një zakon i mirë për të marrë
në vetëm për të bërë kjo nuk është aq konfuze
kur ju jeni duke përdorur Selectors si ID-së apo klasa
për të dy stil dhe për logjikë
në tuaj JavaScript aplikacionet fund para.
Sepse në qoftë se ju keni të ndryshme grupe njerëzish që punojnë
në kodin bazë dhe ju kanë një seleksionues atje
se projektuesi vendos të ndryshojë sepse it's -
nuk duket e madhe, kështu që ata duan për të vënë në një klasë të re dhe të marrë
nga e juaja dhe ju jeni duke u mbështetur në atë për qëllime JavaScript,
atëherë kodi juaj prishet.
Është mirë të prefiksit dhe lloj
e si hapësira pothuajse Klasa JavaScript-lidhura
ose atributet me një prefiks i JS.
Pra, kjo është shumë e e thjeshtë dhe ju mund të shihni
në të gjitha këto raste unë jam duke e quajtur të kthehet kjo në fund.
Pra, kjo është një e mirë zakon të marrë në,
për të ju jap atë një Vlera të vlefshme kthimi.
Në askForName Unë nuk jam sepse kjo ka kuptim
që ju do të marrë emrin e mbrapa.
Por ajo që lejon ju të bëni pastaj
nëse ju ktheheni këtë update emrin, është kthyer vlerën
i cili është setDisplayName kthyer vlerën e kësaj.
Dhe kjo ju lejon të lloj e zinxhirit si ju jeni duke përdorur
në jQuery duke u kthyer vlera e këtij cdo kohe.
Kjo i referohet objektet aktuale
kështu që ju mund të telefononi këtë dot askForName dot setDisplayName
dhe kjo do të mbajë Vlera e kësaj dhe do të lejojë të ju
që të ketë një zinxhir të mirë atje.
Dhe pastaj në - kështu që në ky shembull të dytë.
[Pushim]
Dakord.
OK. Pra, le të shkojë përpara dhe e hapur deri në tastierë
dhe shkoni në tab Burimet tim.
Ne do të pop këtë, në të vërtetë.
Pra, në zhvilluesi Chrome mjetet që kam përmendur,
nuk ka kjo pjesë më e drejtë dhe një -
ju mund të shihni këtë shenjë të ndaluar edhe pse nga default, kjo është e zezë.
Por kur ju miut mbi të, ajo thotë "Mos bëj një pauzë në përjashtime.
Kliko pauzë në të gjithë përjashtime. "
Dhe kur ju klikoni atë përsëri, ajo kthehet blu.
Dhe tani çdo kohë që ka një gabim hedhur
në kodin tuaj JavaScript, ajo do të ndaluar në pikën e lejuar ju
për të vlerësuar se çfarë po ndodh.
Kështu - Dhe kjo është me të vërtetë një të dobishme Koncepti është gati për të nxjerr në pah.
Dhe pastaj nëse klikoni përsëri, ajo kthehet purple
dhe kjo është normalisht ajo që kam mbajtur atë in
Ajo vetëm e thyen kodin kur ka një përjashtim
që nuk është kapur.
Pra, shumë herë në jQuery për shembull, ata do të përpiqet kap
për të provuar nëse ose jo një shfletues ka një lloj të aftësive
dhe të vazhdojë nga atje.
Kjo është vetëm kur ka një gabim
se nuk ka qenë kapur në një kapur provoni.
Pra, le të përpiqet dhe të paraqesë një emër që është bosh.
Kështu që unë mund të shoh se Kodi është ndalur tani
në metodën updateName dhe unë mund të mouse mbi emrat
dhe shihni se është e zbrazët të bosh.
Nuk është e barabartë me bosh.
Pra, nëse nuk hedhin një emër i ri gabim dhe tani unë mund të hap prapa
me funksion kolona dhe të thonë, "OK,
ku ka ardhur nga kjo, "dhe të parë se çfarë vlera e klientit është.
Pra, ajo ka metodë askForName,
setDisplayName Fillimi dhe updateName.
Dhe kjo është vetëm një të vërtetë të dobishme mënyrë ju mund të shihni të ketë të gjitha
variablat që janë në dispozicion në këtë fushëveprimi, si dhe
si variablat e mbylljes, kështu që çdo gjë që është e mbyllur
përsipër nga ky funksion.
Dhe kështu që unë mund të shoh se - çfarë vlera e klientit është
dhe çfarë vlera e kësaj është.
Pra, kjo 'shkaktojë ne jemi në jQuery është e barabartë
të elementit aktual DOM.
Por është e vërtetë të dobishme për debugging kodin
për të thyer në gabime si kjo.
Një tjetër tipar i Chrome Inspektori është
që në çdo moment ju mund klikoni në linjat e ndryshme
në radhë dhe do të thyer në vendet e
ku ju keni vendosur breakpoints ata janë të referuara si.
Pra, nëse unë klikoni, Linja kthehet blu.
Pra më lejoni të vazhdojë Ekzekutimi këtu, OK, që shpërtheu.
Dhe tani le të vënë emrin për të Alice dhe e goditi Submit.
Deri tani unë mund të shoh edhe përpara se të marrë në pikën
i përditësimin çdo gjë, kjo është tani ndaluar të drejtë këtu kështu që unë mund të shoh
se ky emri im është Alice dhe pastaj unë mund të vazhdojë -
më lejoni të rifreskoni faqen.
Në rregull, kështu që tani se është e duke filluar në fillim përsëri,
ajo ka ndaluar në këtë line dhe unë mund të shoh
se emri është aktualisht papërcaktuar.
askForName është e cila funksionon ajo është, në mënyrë që edhe shpesh të dobishme
në qoftë se ju kanë funksione që janë të vijnë nga fotografi të ndryshme
apo vende të ndryshme në Kodi, ju mund të shihni se ku është,
dhe pastaj hidhen në të cilat, ajo do të nxjerrë në pah atë.
Në mënyrë të mirë për të marrë në zakonin i përdorur mjetet debugging
që nuk janë vetëm console dot log.
OK, kështu që le të marrin një shikojmë në një shembull të dytë
gjë që e bën më shumë përdorimin e prototipa siç e kishte përmendur tërthorazi.
Pra, në këtë shembull,
ne jemi duke krijuar një të re funksion të quajtur CS
dhe kjo është kapitalizuar kështu standarde konventë
në JavaScript është nëse një funksion është menduar për t'u përdorur
si një konstruktor, në krahasim
të vetëm një normale funksion, ju germa atë.
Pra, unë kam kapitalit CS dhe kjo merr një courseId ndryshueshme
dhe courseTitle cilat I vendosur për këtë courseId,
kjo courseTitle në konstruktor.
Dhe pastaj kam vendosur edhe studentët dhe leksione si vargjeve bosh.
Pra, arsyeja që ju -
OK, kështu prototip Pronat u përcaktuan më pas
poshtë këtu me - kështu template është vetëm një underscore thjeshtë
template, një template underscore duke qenë një mënyrë që ju mund të -
ngjashme me templates që Davidi kishte përmendur
on server, qe mund vetëm të shkruani një tag script
i cili nuk është një JavaScript script por një HTML tekst
dhe atë që unë jam duke bërë me jQuery është -
kjo nuk do të mbajë këto hapur, vërtet, aty ku jemi.
Me jQuery, është duke u Vlera e HTML e asaj template
dhe pastaj drejtimin e tij përmes nënvizojnë bibliotekat e shërbimeve
motor template.
Pra, dokumentacioni për këtë është këtu
nën template shërbimeve
por në thelb ju mund të lexoni pak më shumë në lidhje me të.
Por ai vlerëson këtë varg dhe e kthen atë në një funksion
të cilat ne pastaj mund të kalojë të dhënat e në dhe ajo thirrje dinamike.
Dy metoda e ardhshme I kanë janë addStudent dhe addLecture.
Këto vetëm të shtoni ato në vargjeve të brendshme që unë kam vendosur
në konstruktor dhe pastaj bëjnë metodë.
Pra, le të krijojnë të reja shembull i CS quajtur 164
cila ka këtë kurs numër 164 dhe titulli.
Dhe pastaj CS50 e cila ka CS50 dhe intro për CS1
dhe pastaj shtoni disa leksione studentëve
dhe pastaj të telefononi CS50 bëjnë.
Dhe në qoftë se unë të drejtuar kodin, kështu Unë jam duke bërë që me eval.
Ju me të vërtetë kurrë nuk dëshironi të përdorni eval, por unë jam vetëm lloj
të marrë të gjitha JavaScript kjo është në këtu
dhe ekzekutimin e tij të fluturojnë.
Ajo e bën në këtë Template këto raste të reja
të klasës Cs që kanë pronat, kështu që ne kemi shkuar
anë dhe bërë addLecture dhe addStudent secilit.
Dhe siç e përmenda sepse unë jam kthyer këtë,
Unë në fakt mund zinxhir këto addLecture dhe addStudent thirrjet
dhe ajo do të punojë po aq mirë.
Tipar tjetër në JavaScript që është edhe më e dobishme
në anën e serverit ku ju me të vërtetë në çdo kohë të dhënë
nëse aplikimi juaj merr më e madhe nuk e di ku je
dhe është e vështirë për të vendosur këto pikat e ndalimit individuale
që kam përmendur në Inspektori Chrome është
për të përdorur fjalen Rregullues.
Kështu që vetëm D-E-B-U-G-G-E-R.
Dhe kur të vendosni një Debugger fjalen në kodin tuaj
dhe ju keni - aty ne do të shkojmë, dy GS.
Kur ju vënë Rregullues fjalen në kodin tuaj
dhe ju jeni drejtimin e një Rregullues
të tilla si krom Inspektori këtu
ose Chrome anën server Inspektori, ai tregon JavaScript
për të ndaluar ekzekutimin në atë linjë e kodit dhe pastaj kjo ju mundëson
në hap me pjesën tjetër e ekzekutimit të kodeve.
Pra, nëse unë klikoni kodin e drejtuar këtu, tani është e ndalur
në këtë linjë Debugger dhe unë mund të shih OK, këtu është vlera e CS50
dhe kjo është një kurs mori Titulli, natyrisht ID,
atë e mori asnjë leksione, asnjë nxënës.
Dhe atëherë unë mund të hap përmes tërë addLecture,
Unë mund të shoh se është shtyrë për në këto ligjërata,
mouse mbi se, "Hello World".
Unë mund të vërtetë në console bërë këtë kështu që kjo është vendosur
me objektin e tanishme që ju jeni futur me emrin
Ky leksion është "Hello World".
Dhe mbani shkelën me sa më shumë që unë dua.
Nëse unë nuk dua të hap
në shkakun Një telefonatë FUNKSIONI ' Unë e di atë që po ndodh
për të bërë shkon në addLecture, ka ky buton të drejtë këtu
i cili thotë se "Hap mbi ardhshëm thirrje funksion, "dhe kështu që unë mund të shkojnë
deri në atë pikë u unë jam ndoshta pyesin për diçka.
Ashtu si për shembull 164 render.
Pra, në këtë pikë, është e do të jetë dhënë.
Unë mund të shoh këtë template është hartuar template.
Unë mund të shoh në këtë pikë unë duhet të ketë dy studentë
dhe dy leksione.
Dhe pastaj nuk ka prototip zinxhir që unë po i referohej.
Pra, ai e parazgjedhur që vjen së bashku me vetëm një objekt
në JavaScript në përgjithësi,
ajo vjen me dy varg Vlera e konstruktor.
Dhe pastaj ato që Unë e kam shtuar më veten time
me addLecture, addStudent dhe pastaj pronat
që janë unike për këtë rast i klasës
siç u pretendua me fjalen e ri.
Pra, le të bëjë vetëm një më shumë shembull për këtë
dhe pastaj ne do të hap për disa gjërat më interesante
në anën e serverit.
Pra, le të shkojë përpara dhe të hapur ky shembull i fundit i cili është -
le të shohim, ku është kodi?
Unë nuk e di ku shkoi kjo.
OK, edhe, ne mund vetëm të kaloni mbi këtë kod, atëherë në të vërtetë -
oh prit, unë mendoj se kam humbur fletë stil për kodin.
OK, kështu që le të bëjmë kjo pak më e madhe.
Në këtë shembull, unë jam duke treguar pak më shumë në vendosjen
up zinxhirit prototip,
kështu ngritjen trashëgimi me JavaScript.
Pra, në këtë rast, ne kemi një katalog i cili do
për të ruajtur me sa duket Kurse të shumta.
Dhe kështu një katalog ka një Metodat addCourse.
Pra, ajo kontrollon nëse kursi që është miratuar në është një shembull
natyrisht si thirret me fjalen e ri.
Pra, nëse ju provoni dhe për të dërguar
në diçka të ndryshme, ajo do të bërtas në ju.
Bëjnë metodë e cila do të bëjnë secili prej kurse
me hartimin e template e saj poshtë.
Dhe ne kemi kursin të cilat qasja
në këtë rast klasë bazë për Kurse individuale departamentit.
Dhe në vend të përcaktimit të secilit
sigurisht dot prototip dot metodë
ose pronës duke përdorur zgjasë ndihmës në bibliotekë të nënvizuar
të lloj i thirrjes zgjasë ky prototip me të gjithë
këto vetitë, e cila është dobishme, pak më e lehtë për të lexuar.
Dhe pastaj poshtë këtu duke bërë atë që është njohur si vendosjen
up zinxhirit prototip.
Pra, kjo është në të vërtetë pak ndërlikuar për njerëzit në fillim
dhe madje edhe ende e ka bërë këtë për pak kohë, kjo është lloj i vështirë
të përfundojë kokën tuaj rreth.
Por mos lejoni që t'ju trembë.
Kështu që unë jam duke krijuar një të ri -
një klasë krejtësisht të re objekt këtu, CS.
Dhe në konstruktor,
Unë jam duke thënë kurs aplikojnë këtë argumente.
Pra argumente është një e veçantë Vlera I guess ju mund të telefononi atë
në JavaScript, fjalen e cila i ka të gjitha
e çdo gjë që është kalonte është argumente
se funksioni janë në dispozicion me argumentet e quajnë,
me argumente fjalen.
Pra, si unë jam duke e quajtur me kurs dot të zbatohet,
ky është konteksti aktual me të cilin CS është duke u quajtur.
Pra, kur unë kërkoj atë me të reja kjo është një - kjo është një vlerë e CS.
Dhe unë jam duke thënë këtë e quajnë Metoda sigurisht deri këtu.
Oh vjen keq - e quajnë këtë Metoda kurs të drejtë këtu
por të vendosur vlerën e këtij të jetë çdo gjë që vlera
e kjo është e drejtë këtu.
Pra, aplikoni fjalen lejon ju të lloj të ndryshuar gjendjen
e kjo e cila është se si jQuery është e lejuar për të zgjidhur të kaloni
nga kjo për ju si ju jeni duke kaluar
dhe të bëjë një elemente DOM në vend të objektit jQuery.
Deri tani unë jam duke shkuar për të vendosur një funksion të përkohshëm
të cilat do të kap prototip i kursit.
Dhe lloj e vendosur atë të prototipit të tij
dhe pastaj të vendosur prototip në funksion objekt CS
në një shembull të ri të kësaj.
Pra, në thelb unë jam duke thënë në vend -
në qoftë se unë këtu e bëri Cs Dot prototip është e barabartë me kurs të ri.
Atëherë do të ishte e duke e quajtur çdo gjë
në këtë funksion konstruktor,
që s'dua domosdoshmërisht të kërkuar për të.
Pra, të gjitha unë jam duke bërë është lloj i krijimit pothuajse
si një funksion zëvendësuese e cila do të ketë kurse prototip
mbi të dhe lloj imitoj prototip -
Sigurisht por pa bërë çdo gjë në konstruktor
dhe të vendosur që të prototip.
Dhe atëherë unë jam vetëm duke shtuar kështu departamentin e
në këtë rast është Computer Shkenca për objektin CS.
Dhe atëherë unë kam një lloj të një version urë e bëjnë këtë.
Ajo nuk punon në IE9.
Pra, kjo është arsyeja pse kam kërkuar për të treguar se si lloj -
atë që kjo është duke bërë nën kapuç.
Por ju mund të vendosni se në të njëjtën mënyrë
ku Econ është e barabartë me funksionin Sigurisht aplikojnë këto argumente
dhe pastaj thonë Econ Dot Prototype është e barabartë me objekt dot CreateCourse
dot prototip.
Kështu që është krijon një objekt të ri e cila është vetëm prototip
për kursin dhe pastaj vendosur departamentin atje.
Pra, tani le të shkojnë vetëm të vendosur një Rregullues këtu dhe klikoni në arrati.
Nuk shkojmë.
Pra CS164 ne mund të shohim zinxhir prototip ne kemi marrë
prona të cilat ishin vendosur në konstruktor.
Pra vlerat e tyre që janë të vendosur dhe pastaj në zinxhirin Prototype
për objektin CS ajo kishte Departamenti Shkenca Kompjuterike vendosur.
Dhe pastaj më themelor zinxhir prototip,
ne atëherë kemi të gjithë metodat dhe pronat
që janë unike për objekt kurs.
Dhe pastaj ne kemi objektet bazë.
Kështu që një lloj i shpejtë shembull i zinxhirit prototip.
Dhe si ju mund të shihni këtu, nuk janë dy vlera për departamentin.
Pra, nuk ka departament e shkencave kompjuterike
dhe pastaj të departamentit nuk e listuara të cilat kam thënë
si vlera parazgjedhje këtu.
Pra zinxhir prototip është në fakt vetëm një formë individuale
Lista Lidhje.
Dhe si ajo përpiqet të të gjetur një pronë,
ai do të fillojë në Vlera e nivelit të lartë.
Pra, çfarë është përcaktuar në funksioni konstruktori
dhe pastaj lloj shkoni poshtë zinxhir prototip nga atje.
Pra, për shkak se ajo gjeti, kështu -
nëse të drejtë këtu, unë them CS50 dot Departamenti,
kjo do të thotë shkenca kompjuterike.
Por në qoftë se unë them var -
[Pushim]
Por në qoftë se unë them humane është e barabartë me kurs të ri
dhe atëherë unë them humane dot departamenti,
Unë do të shoh departamenti nuk e listuara sepse ajo shkoi për të parë -
Unë mund të shikoni në prototip zinxhir të vërtetë këtu.
Kështu ajo shkoi së pari në kurs kundërshtojnë dhe e pa nuk ka asgjë
në zinxhirin prototip në ky nivel për departamentin e
apo për vlerat e departamentit në mënyrë atëherë ajo hedhje në nivelin e ardhshëm,
kurs dhe duket përpara aty dhe e gjen atë.
Pra, vetëm ajo lloj si shkon poshtë nga lart poshtë
dhe kjo është lloj i diçka që është unike
rreth JavaScript është që ju mund të ndryshojë ndonjë
të këtyre vlerave në çdo kohë të dhënë.
Pra, në konstruktor ose në një Metoda individuale në objektin
në qoftë se unë dua të vendosur këtë Departamenti për diçka të re,
ose në qoftë se unë të dëshironi të vendosur ndonjë nga këto funksione
që janë tashmë ekzistojnë
për diçka të re, Unë jam i lirë për të bërë këtë.
Deri tani unë kam CS50 dot addLecture, duket si kjo.
Dhe në qoftë se unë dua të vendosur atë për të CS50 addLecture vetëm të barabartë me
në funksion bosh.
Pastaj tani unë mund të shoh se është vetëm ndryshuar tërësisht
të cilat ju nuk jeni në gjendje për të bërë një tjetër gjuhë
ku ju keni një të rrepta klasë bazuar trashëgimi
dhe çdo gjë është e lloj i ngritur.
JavaScript është shumë, shumë e fleksibël në lidhje me këtë.
OK, le të hidhen përsëri në slides.
Pra, në qoftë se për shembull ju gjithmonë do të donte një funksion
që të ketë një të veçantë kjo vlerë të vendosur për të.
Ju mund të telefononi funksion dot detyrimit
dhe vendosur çfarë vlera e kjo duhet të jetë.
Ju mund të mendoni për atë si -
"Unë jam duke u përpjekur për të menduar për një shembull të mirë botës reale por ",
në qoftë se ju doni të mbrojtur kodin tuaj
kundër dikujt potencialisht duke e quajtur atë me një vlerë
se nuk do të ishte kjo.
Ashtu si për shembull AJAX callback si tepërt apo gabimi.
Ata zakonisht nuk quhen
me një semantik të mirë Vlera e kësaj.
Dhe ju jeni si, "OK, unë gjithmonë duan që kjo të jetë vlera
e objektit kursit që unë jam duke punuar me të.
Ose pikëpamja që unë jam duke punuar me të në kodin tim
që përfaqëson ky Nyje DOM, ju mund të vendosni -
ju mund të lidhet në këtë kontekst dhe atëherë kur është quajtur më vonë
nga jQuery dhe nuk ka një Vlera e mirë për këtë ajo do të rrinë
për atë që kufizohet me.
Pastaj ka thirrje funksion u ju mund të specifikoni kontekstin
dhe të specifikojë çdo ndryshore Numri i argumenteve.
Dhe pastaj nuk ka funksion aplikojnë të cilat ju mund të kalojë
në kontekstin e pastaj ose një grup
ose argumentet e objekteve që I përmendur si ju shihni atje.
Dhe argumentet në ndonjë funksion që ju e quani,
ju thjesht mund të shtypni në fjala "argumentet"
dhe kjo do të duhet të gjithë argumentet.
Ajo ka një "gjatësi" e pronës
i cili është se si argumente majit u në fakt kaloi në atë metodë
pasi që në JavaScript ju mund të lloj të thirrjes
me numrat e ndryshueshme e argumenteve.
Është e dobishme për të thënë nëse kjo kishte një argument,
pastaj ndiqni këtë rrugë kod.
Në qoftë se ajo kishte dy, ju mund duan të ndjekin një rrugë tjetër.
Kjo ju lejon të keni të vërtetë TV dinamike për metodat tuaja.
Ju mund të mendoni se me jQuery
si kur ju keni dollar dot në ose lidh.
Dhe kjo lloj e bën gjëra të ndryshme
nëse ju vënë një argumenti ose dy ose tre
ose filluar atë me një funksion.
Ajo është duke përdorur argumentet pronë
dhe argumentet Gjatësia në shumë raste
të ketë këtë magji funksionalitetin ndodhë.
Gjërat që ju nuk mund të bëni me Argumentet e përdorin atë vetëm
nga default si një grup.
Kështu që ju mund të them argumentet tre dhe vendosur atë në diçka
si ju mund të duke përdorur caktimi array.
Ju mund të përdorni - shumë nga metodat nënvizojnë
për ose koleksione ose për të punuar me vargjeve,
ju mund të kalojë në argumente dhe ajo do të kuptojë
se është e një argumente objekt dhe lloj
e të kujdeset për atë për ju.
Por në qoftë se ju doni të përdorni Argumentet që janë miratuar
përmes një funksion si një grup,
ju mund të përdorni të nënvizuar dot dy array.
Një nga numri e funksioneve të shërbimeve
që janë ndërtuar në për të nënvizuar.