>> Ang lahat ng mga karapatan, kaya ngayon, Pupunta ako sa pakikipag-usap ay
tungkol sa JavaScript at kung paano ito naiiba mula sa iba pang mga wika
na maaari kang maging ginagamit upang i PHP.
Kaya sa huling panayam sa Lunes, usapan natin ng kaunti
tungkol sa kung ano ang katulad na mga ano, ang pamilyar sa pagitan ng JavaScript
at PHP o Python o Ruby o C o iba pang mga wika
na ikaw ay isa nang alam.
Ngunit JavaScript ito talaga May isang talagang natatanging tumagal
sa modelo sa bagay na ginagawang ito uri ng ganap na magkaibang mga
kaysa sa karamihan ng mga wika na ka pagpunta upang harapin ang.
Kaya function ay isang uri
ng underappreciated konsepto sa JavaScript.
Ang mga ito ay paraan mas malakas kaysa ang mga ito ay sa iba pang mga wika
dahil maaari nilang sa - para sa isang kadahilanan,
ang mga ito ay magagawang upang maging itakda bilang mga halaga.
Kaya dito mismo mayroon kami var x ay katumbas ng pag-andar
at ito ay isang first class halaga na maaaring maipasa
sa paligid bilang isang argumento.
Kaya hindi mo kailangang i- Ipinahahayag ng function x
at gamitin na lamang ang x sa na saklaw.
Maaari mong ipasa ang mga halaga ng x kahit saan sa buong, alam mo na,
bilang isang argumento sa isa pang function na
kung saan maaari kang module export bilang David nabanggit sa node.
Kaya sa susunod na tuldok ay
na ang isang function ay isang Bagay sa JavaScript.
Kaya maaari mong aktwal na-set mga katangian bilang mga halaga
sa isang function at ituturing lamang ito bang ito ay isang bagay.
Kaya kapag katrabaho mo jQuery, alam mo, na dollar
at pagkatapos ay pumasa ka isang tagapili ng pansin ito
at pakiusapan ito bilang isang katangian.
Ngunit pagkatapos ka din na dolyar dot AJAX.
At iyon ay hindi isang uri ng magkaroon ng kahulugan kung sa tingin mo
ng isang function tulad ng pagiging isang bagay na maaari mong manawagan
o tumawag.
Ngunit nagbibigay-daan sa iyo JavaScript upang itakda ang mga katangian sa mga function
bilang static na mga katangian ng gamit lang x tuldok someProp
bilang itinuturo ko out doon.
Ang susunod na punto kung saan kami ay pagpunta sa pumunta sa isang kaunti pa
malalalim ay ang katunayan na ang mga function maaaring ituring
bilang mga klase sa JavaScript.
Kaya doon ay ang konsepto ng bagong operator
na lumilikha ng isang bagong pagkakataon ng ang pag-andar kasama ang isang uri
ng tulad ng klase-tulad ng katawan na kung saan ay kasama ang mga ito
at kami ay pagpunta sa pumunta sa ito ng kaunti pa,
ang tawag dito ang prototype.
At ito ay kung ano ang ginagawang JavaScript napaka natatanging kumpara
sa iba pang mga wika na klase batay,
JavaScript ay isang prototype batay.
At pagkatapos lamang sa sa ilalim doon,
Maaari lamang tawagin ang function malinaw bilang namin sa nakasanayan mo.
Kaya na walang bagong.
Isa pang bagay na natatangi ay
na array ay aktwal na bagay.
Hindi nila ka bang mga ito ay nasa PHP
kung saan lumikha ka lang isang bagong array.
Ito ay talagang isang shorthand para sa sinasabi bagong array.
At array ay talagang isang subclass ng isang bagay.
Kaya iyon ang isang bagay iba't ibang at kukunin ko na pumunta
sa isang maliit na isang mas pang detalye sa na.
At ang mga kakayahan sa pag-debug
may JavaScript ay talagang walang kaparis kasing layo ng iyong nakita ko.
Ito ay isang screenshot ng Chrome Inspector
na kung saan kami ay pagpunta sa ginagamit para sa natitirang
ng pagtatanghal ngayon.
At upang makakuha ng sa na ito, mo lamang pumunta sa file tool ng nag-develop
at bukas Chrome Inspector o maaari mong i-right click
at i-click ang ipakita ang mga elemento ko sa tingin ito ay sa HTML na pahina
o sa tingin ko ito ang command na magbubukas ito ng hanggang opsyon J.
Ngunit masisiyahan kaming pumunta sa ito at ikaw talaga maaaring itakda breakpoints
bilang ikaw ay nagpapatakbo ng sa pamamagitan ng ang code ng JavaScript at uri
ng pag-aralan kung ano ang mga lokal na variable ay, kung ano ang halaga
ng ito ay at ito ay ginagawang paraan mas madali upang i-debug code.
At don't - ito ay hindi nilimitahan sa browser-side na code
ngunit maaari kang talaga magpatakbo ng isang halimbawa
ng Chrome Inspector para sa iyong mga serbisyo side na code
na kung saan ay talagang nasa ayos dahil sa iyo Maaari magbasa-basa linya sa pamamagitan ng linya
bilang isang kahilingan ay nagmumula sa iyong server at makita kung ano ang nangyayari
at maglaro kasama ang mga variable sa console ng pababa dito.
Kaya bilang ko nabanggit, JavaScript ay isang wika prototype-based
na nangangahulugan na doon ay isang hanay ng mga default na halaga na mga uri
ng nakatagong para sa bawat pag-andar
sa bagay na tuldok prototype ari-arian.
Kaya ito ay isang uri ng ng hash ng iba't ibang lamang mga default na halaga
na kapag pakiusapan mo ang isang function na may mga bagong keyword,
mga naka-set sa pamamagitan ng default bilang mga pag-andar
na magagamit sa halimbawa.
Kaya na talaga talagang mahusay para sa -
ito ay isang mahusay na paraan ng paglikha ng mga bagay memorya matalino
dahil ang JavaScript runtime lamang ay may upang masubaybayan
ng prototype ng ang bagay.
Ito uri ng mga nagtuturo sa na
kapag cretae ka ng isang bagong Halimbawa ng isang klase.
At maaari ka ring gayahin inheritance bilang ay kilala
sa klase-based na mga wika kung saan mayroon kang uri
ng tulad ng isang ito ay umaabot na iyon, ay umaabot na maaari mong gayahin
na sa JavaScript sa pamamagitan ng kung ano ang tinatawag na
prototype chain.
At ipapakita namin makita ang mga halimbawa tungkol iyon.
Kaya kung ang iyong - jQuery plugin talaga sila Inirerekumenda jQuery
mga may-akda upang gamitin ang dollar na tuldok fn upang magdagdag ng pag-andar
sa jQuery library.
At talagang kami ay pagpunta sa tumalon sa - Kaya, sa pahinang ito,
mayroon kaming ang dollar - Isinama ko jQuery.
At kung gagawin mo dolyar dot sa console
na nabanggit ko pagdadala up ka sa pamamagitan ng paglilipat ng command J
o pagpunta lamang sa View, Mga Tool ng Nag-develop, Developer
at pagpunta sa tab na Mga Pagmumulan.
[Hindi marinig Puna]
Oh sigurado. Kaya kapag nagsimula ko mag-type ng isang variable,
ito ang auto-nakumpleto para sa akin kung ano ang available doon.
Kaya ko nai-type sa dolyar at maaari ko makita sa tingin ko Chrome ay may ilang mga
built-in na dolyar, dollar at dollar x.
Kaya ngayon nais ko lang dollar at kong ilagay sa isang tuldok.
At pagkatapos ay nagpapakita ito sa akin lahat ang mga katangian
na magagamit sa jQuery bagay.
Ngunit kung gagawin ko dollar tuldok prototype,
Ako ngayon makita ang lahat ng mga pamamaraan na ako na ginamit upang gamit
kapag mayroon akong mga dolyar, tagapili at pagkatapos ay i-chain ko off na may,
alam mo na, idagdag klase o ikabit ang o lumabo o anuman sa mga katulad.
Iyon ang lahat ng mga aktwal na sa prototype
na sa ilalim ng hood ang jQuery lumilikha ng isang bagong pagkakataon ng mismo
at ito uri ng mga Itinatago ang lahat mga detalye mula sa iyo.
Kaya sa punto na ako ay paggawa pabalik sa ibabaw dito
may pag-andar, ang mga ito talaga itago ang prototype mula sa iyo
at lamang alias ito sa dolyar dot fn.
Kaya karamihan ng mga tao talaga huwag mapagtanto
na mayroong isang prototype sa ilalim ng hood that's -
na maaari mong i-tap sa at magdagdag ng mga karagdagang pag-andar
sa bawat jQuery halimbawa kung gusto mo.
Kaya ang "bagong" operator ay talagang uri ng mga mahirap
upang maunawaan sa unang.
Kapag tumawag ka ng isang function may "bagong",
ito ay isang ganap na magkaibang mga paraan ng pagtawag sa function na
parang tinatawag mo lang ito malinaw.
Kaya ang "bagong" operator ay lumilikha kung ano ay tinatawag na isang bagong halimbawa
ng isang bagay o ng isang bagong Halimbawa ng, maaari mong isipin
ng bagay na bilang isang klase.
At kapag nangyari ito, ang halaga ng ito na maaaring maging pamilyar
may mula sa jQuery, uri ng mga ito set na ito
kung ano ay maginhawa sa oras.
Karaniwang mga ito ay itakda ito upang ang kasalukuyang DOM node na ikaw ay
sa bilang ka ng pagpunta sa pamamagitan ng tulad ng bawat o isang bagay tulad na.
Sila - Ang halagang ito ay dapat upang maging ang halaga ng halimbawa
na iyong nilikha gamit ang "bagong", na kabilang ang lahat ng bagay
sa prototype chain at sa lahat ng sa mga paraan na gusto mo mahanap
bilang mga katangian ng prototype.
Kaya ito ay depende sa kung paano isang function ay tinatawag na,
kung ano ang halaga ng ito ay.
At talagang ito ay nakalilito kung ikaw ay bago sa JavaScript.
Subalit ang bawat pag-andar na tinatawag na May - May sa ang halaga na ito.
Kaya kahit na hindi mo nilikha isang bagong pagkakataon ng isang bagay,
na ito ay ipinapalagay upang maging global.
O maaari kang tumawag sa isang function gamit ang paraan na tawag
kung saan ang mag-apply pamamaraan sa JavaScript.
Maaari mong ang pag-andar at tukuyin kung ano ito ay dapat na.
Kaya maaari mo itong gawing dynamic, na kung saan ay talagang malakas
ngunit nagbibigay-daan din sa iyo na gawin mga bagay na maaaring mapanligaw
at nakalilito sa iba pang mga developer
kung hindi sila gumamit ng katotohanan.
At jQuery, Gusto ko magtaltalan ginagawang mas itong mas nakalilito
sa pamamagitan ng ginagawa itong maginhawa at pag-set ito
sa kasalukuyang DOM node.
Ngunit ang simpleng panuntunan upang matandaan kung ano ang halaga ng ito ay
kapag tumitingin ka
sa isang functional na tawag ay na natira ng tuldok.
Kaya kung mayroon kang isang bagay
at ito ay isang bagay na tuldok isang bagay ay ang pag-andar
na kayo ay pagtawag pagkatapos ay ang unang halaga ay kung ano ang halaga
ng ito ay.
Kaya dito ay isang halimbawang code
kung saan makakakuha ako ng paglikha isang bagong literal na bagay
na kung saan ay ang object nilikha gamit ang kulot tirante
at ako pagtatakda ng pangalan upang Bob
at pagkatapos ay mayroon akong sayName pamamaraan dito na -
kaya sa loob ito sayName kung ako x dot sayName,
ang halaga ng ito ay katumbas sa x dahil sa kaliwa
ng ang tuldok ay x. Kaya kung Tinatawag kong ito x tuldok sayName,
Gusto ito sabihin Kamusta Bob.
At pagkatapos ay isa pang halimbawa
kung saan talaga ako magtatalaga sa x tuldok sayName, ang pag-andar
sa variable Y, na bilang ko nabanggit
sa JavaScript ka Maaari magtalaga ng mga function
sa mga variable ng kahit kailan mo gusto, talaga nababaluktot na paraan,
ngunit ngayon kapag tumawag ako Y, ito ay nawala sa konteksto ng x.
Kaya ito ay ngayon global o kung ikaw ay sa mahigpit na mode,
Naniniwala akong ito'y null o hindi natukoy.
Ngunit - Kaya Y ay hindi kung ano ang iyong umaasa dito kung naghahanap ka ng
sa x at tapos ka ng pagpunta upang tumawag sayName,
inaasahan mo ito pangalan ay dapat na maging Bob.
Ngunit kung nakuha mo ito ang bagay at tinatawag na ito
sa pamamagitan ng sarili nito, ito ang global ngayon.
At iyon ang kung ano ang pagbanggit ko kapag nakita mo ang dollar na dot na ito,
madalas kang huwag isipin kung ano ang aktwal na nangyayari.
Ngunit jQuery uri ng mga may kanilang sariling wika partikular na domain-
para sa pagharap sa mga ito at hindi ito kung ano ang nakasanayan
upang sa JavaScript.
At ituro ko ito out dahil ito ay talagang mahalaga
para sa pagsusulat ng mga mahusay na istrakturang sa bagay na oriented na code
sa JavaScript upang talagang mayroon isang mahusay na pag-unawa at hawakang mahigpit
ng kung paano ito gumagana at kung paano ang mga gawa modelo sa bagay na
at kung paano gumagana ang mga bagong operator.
Kung hindi man, makakapunta ka up gamit ang jQuery spaghetti
kung saan lahat ng bagay ay uri ng lahat ng dako ng lugar
at pakikitungo lamang sa pamamagitan ng DOM.
Kung kaya mo talaga sumulat ng JavaScript
sa isang mas nakabalangkas na fashion, Ginagawang ito ay mas madaling
upang gumana sa, upang ayusin ng ihiwalay ang mga alalahanin
ng palitan sa pag-update ng DOM at pakikitungo
may mga aktwal na lohika at code.
Kaya ipaalam sa tumagal ng isang pagtingin sa isang ilan sa mga halimbawa sa paligid na.
Kaya Mayroon akong ilang mga halimbawa dito.
Kaya ito ay lamang ng isang simpleng halimbawa ng paggamit ng JavaScript sa bagay na
at pagdagdag ng ilang mga pag-andar upang ito at pagkatapos ay ang paglikha ng uri
ng tulad ng isang maliit na larawan application.
Kaya ito ay napaka-simple talaga.
Ang tanging bagay na ginagawa nito ay sa una itong prompt ang iyong pangalan.
Kaya Sasabihin kong Tim at pagkatapos ay sa iyo maaaring baguhin ang iyong pangalan upang Bob.
At iyon ang lahat ng ito gumagana ang application.
Ngunit ano ang nais kong ituro out ay kung paano ito gagawin nito.
Kaya Mayroon akong ito pangalan generator sa bagay na may isang paraan ng pagsisimula
na nagtatanong sa gumagamit para sa kanilang mga pangalan
sa pamamagitan ng pagtawag lamang ito askForName
na down na dito ito ang ginagawa ng prompt
kung pangalan ay hindi itinalaga pagkatapos ito ay humihingi muli para dito
sa pamamagitan ng pagtawag ito askForName.
At pagkatapos ay sa sandaling ito ay nakakakuha ng pangalan, ito tawag ang pangalang ito update.
Kaya ito pagkatapos nagtatakda sa Pangalan ng gumagamit sa h1 tag.
At kung ang pangalan ay hindi set, throws ito ng isang error.
[Hindi marinig Puna]
Oh sigurado. Kaya Nagtatakda ito ang Pangalan ng gumagamit sa h1 tag
sa pamamagitan ng pagtawag setDisplayName na nagtatakda sa HTML
sa JS pangalan ng container at Ako prefixing lahat ng aking mga HTML
may JS tagapili dahil lang ito ay isang magandang ugali upang makakuha ng
sa upang gumawa lamang ito hindi kaya nakalilito
kapag ikaw ay gumagamit ng tagapili tulad ng mga klase ID o
para sa parehong mga estilo at para sa logic
sa ang iyong JavaScript front end ng application.
Dahil kung mayroon kang iba't ibang grupo ng mga tao na nagtatrabaho
sa ang code base at mo magkaroon ng isang tagapili doon
na ang mga designer ay nagpasiya baguhin dahil it's -
hindi mukhang mahusay, kaya nais nilang ang ilalagay sa isang bagong klase at tumagal
out ng sa iyo at ikaw ay umasa sa ito para sa mga layunin ng JavaScript,
pagkatapos ang iyong code Pinaghihiwa.
Ito ay handa na upang prefix at uri-uriin
ng tulad namespace halos ang Na may kaugnayan sa JavaScript klase
o mga katangian sa isang prefix ng JS.
Kaya ito ay medyo simple at maaari mong makita
sa lahat ng mga kasong ito ako pagtawag bumalik ito sa dulo.
Kaya ito ay isang magandang ugali upang makakuha ng sa,
upang bigyan ka ng isang ito wastong halaga ng pagbabalik.
Sa askForName hindi ako dahil iyon ang may katuturan
na nais mong makakuha ng mga pangalan likod.
Ngunit ano na nagbibigay-daan mong gawin pagkatapos
kung ibalik mo ang update na ito pangalanan, ito ay bumabalik ang halaga
ng setDisplayName na bumabalik na ang halaga ng ito.
At na nagbibigay-daan sa iyo upang ayusin ng chain bilang ka sanay
upang sa jQuery sa pamamagitan ng pagbalik ang halaga ng ito sa bawat oras.
Ito ay tumutukoy sa kasalukuyang bagay
kaya maaari mong tawagan ang tuldok askForName tuldok setDisplayName
at gusto itong panatilihin ang halaga ng mga ito at daan sa iyo
upang magkaroon ng magandang chain doon.
At pagkatapos ay sa - kaya sa ito pangalawang halimbawa.
[I-pause]
Ayos lang.
OK. Kaya sabihin sige at buksan ang console
at pumunta sa aking tab na Mga Pagmumulan.
Susubukan naming-pop out na ito talaga.
Kaya sa mga nag-develop ng Chrome mga kasangkapan na aking nabanggit,
mayroong piraso ito sa kanan at isang -
maaari mong makita na ito stop sign bagaman sa pamamagitan ng default, ito ay itim.
Pero kapag nag-mouse sa ibabaw nito, ito sabi ni "Huwag i-pause sa pagbubukod.
I-click ang i-pause sa lahat ng mga pagbubukod. "
At kapag nag-click mo ito muli, ito ay lumiliko asul.
At ngayon, anumang oras na mayroong isang error itinapon
sa iyong code ng JavaScript, ipapakita ito itigil sa punto at daan sa iyo
upang pag-aralan kung ano ang nangyayari sa.
Kaya - At iyan ay talagang kapaki-pakinabang ang isang konsepto ay tungkol sa upang ituro.
At pagkatapos ay kung i-click mo muli, ito ay lumiliko lilang
at ito ay karaniwang ano panatilihin ko ito in
Pinaghihiwa lamang nito ang code kapag may isang pagbubukod
na hindi pa na nahuli.
Kaya ng maraming beses sa jQuery para sa Halimbawa, sila subukan catches
upang masubukan kung o hindi ang isang browser ay may ilang uri ng mga kakayahan
at magpatuloy mula doon.
Ito ay lamang kapag mayroong isang error
na hindi naging nahuli sa isang try catch.
Kaya sabihin subukan at isumite ng isang pangalan na blangko.
Kaya ang maaari kong makita na ang code itinigil ngayon
sa ang paraan updateName at maaari ko mouse sa ibabaw ng mga pangalan
at makita ito ay walang laman na blangko.
May ito ay katumbas ng blangko.
Kaya kung hindi pangalanan magtapon ng isang bagong error at ngayon maaari kong hakbang pabalik
sa pamamagitan ng function na haligi at sabihin, "OK,
saan ito nanggaling mula sa, "at makita kung ano ang halaga ng kliyente ay.
Kaya mayroon itong askForName pamamaraan,
setDisplayName simula at updateName.
At ito lamang ang talagang kapaki-pakinabang paraan maaari mong makita ang lahat ng
mga variable na magagamit sa pati na saklaw
bilang ng mga variable pagsasara, kaya kahit ano na isinara
sa ibabaw sa pamamagitan ng ito function.
At gayon ang maaari kong makita na - kung ano ang halaga ng kliyente ay
at kung ano ang halaga ng ito ay.
Kaya ito 'sanhi kami sa jQuery ay katumbas
sa kasalukuyang elemento ng DOM.
Ngunit ito ay talagang kapaki-pakinabang para sa debugging code
masira sa mga error na tulad nito.
Isa pang tampok ng Chrome Inspector ay
na sa anumang punto maaari mong mag-click sa iba't-ibang linya
sa hilera at idedetalye ito masira sa lugar
kung saan mo nai-set breakpoints ang mga ito ay tinutukoy bilang.
Kaya kung nag-click ako, ang linya lumiliko asul.
Kaya ipaalam sa akin patuloy ang pagpapatupad dito, OK, na sinira.
At itakda ang pangalan ngayon hayaan sa Alice at pindutin ang Isumite.
Kaya ngayon maaari kong makita kahit na bago ito nakuha sa punto
ng pag-update ng lahat ng bagay, ito ay ngayon tumigil dito mismo sa gayon maaari kong makita
na ang aking pangalan na ito ay Alice at pagkatapos ay maaari kong magpatuloy -
hayaan mo akong i-reload ang pahina.
Ang lahat ng mga karapatan, kaya ngayon na ito simula sa simula muli,
ito huminto sa ito linya at ang maaari kong makita
na pangalan ay kasalukuyang hindi naipalilawanag.
askForName ay kung aling mga function na ito ay, sa gayon ay madalas na kapaki-pakinabang din
kung mayroon kang mga pag-andar na nagmumula sa iba't ibang mga file
o iba't-ibang mga lugar sa code, maaari mong makita kung saan ito ay,
at pagkatapos ay lumipat sa na, ay i-highlight ito dito.
Kaya magandang upang makakuha ng sa ugali ng paggamit ng mga tool sa pag-debug
na hindi lamang Console tuldok log.
OK, lumabas sa gayon ipagbigay-isang tumingin sa isang pangalawang halimbawa
na ginagawang higit pang paggamit ng mga modelo bilang ako ay alluded sa.
Kaya sa halimbawang ito,
kami ay ang paglikha ng isang bagong function na tinatawag na CS
at ito ay capitalized kaya ang pamantayang convention
sa JavaScript ay kung ang isang function ay dapat na gagamitin
bilang isang constructor, bilang kabaligtaran
upang lamang ng isang normal na function, ika-capitalize mo ito.
Kaya Mayroon akong kabisera ng CS at ito tumatagal ng isang variable courseId
at courseTitle na Ako magse-set upang ito courseId,
ito courseTitle sa constructor.
At pagkatapos ay itakda ang mga mag-aaral din ako at mga aralin bilang walang laman array.
Kaya ang dahilan na iyo -
OK, kaya ang prototype mga ari-arian ay pagkatapos tinukoy
down na dito may - sa gayon template lamang ang simpleng guhitan sa ilalim
template, isang salungguhit template pagiging isang paraan na maaari mong -
katulad ng mga template na si David ay Binanggit
sa server, maaari kang magsulat lamang ng script tag
na kung saan ay hindi isang JavaScript script ngunit isang text HTML
at kung ano ako paggawa may jQuery ay -
hindi ito panatilihin ang mga bukas, oo, doon pumunta kami.
Sa jQuery, nakakakuha ito ng mga HTML halaga ng na template
at pagkatapos ay tumatakbo ito sa pamamagitan ng guhitan sa ilalim utility sa mga aklatan
engine template.
Kaya ang dokumentasyon para sa na ay down dito
sa ilalim ng template utility
ngunit isa lamang maaari mong basahin ang Medyo nang higit pa tungkol dito.
Ngunit sinusuri nito ang string na ito at lumiliko ito sa isang function
na pagkatapos ay maaari naming ipasa ang data sa at ito pabago-bago tumawag.
Ang susunod na dalawang mga pamamaraan mayroon ako ay addStudent at addLecture.
Ang mga lamang idagdag ang mga ito sa panloob na array na na-set ko
sa constructor at pagkatapos ay ang render pamamaraan.
Kaya, ng likhain ang bagong hayaan Halimbawa ng CS na tinatawag na 164
na may kursong ito numero 164 at pamagat.
At pagkatapos CS50 na may CS50 at intro sa CS1
at pagkatapos ay idagdag ang ilang mga aralin mga mag-aaral
at pagkatapos ay tumawag sa CS50-render.
At kung nagpatakbo ako ng code, kaya Ako paggawa na may eval.
Ikaw ay hindi kailanman talagang nais na gumamit ng ang eval, ngunit ako uri lamang
ng pagkuha ng lahat ng JavaScript na nasa dito
at e-execute ito sa mabilisang.
Ito ay nag-render sa ito ng template ang mga bagong mga pagkakataon
ng CS class na kung saan ay mayroon ang mga katangian, kaya hindi namin nakaalis na
sa pamamagitan at tapos addLecture at addStudent sa bawat isa.
At bilang ko nabanggit dahil ako bumabalik na ito,
Maaari ko talagang chain mga addLecture at addStudent tawag
at makikita ito ay gagana lamang pati na rin.
Ang iba pang mga tampok sa JavaScript na kahit na mas kapaki-pakinabang
sa gilid server kung saan Talaga sa anumang naibigay na oras
kung nakukuha ng iyong application mas malaki hindi alam kung nasaan ka
at ito ay mas mahirap i-set mga indibidwal na breakpoints
na nabanggit ko sa ang Chrome Inspector ay
upang magamit ang debugger keyword.
Kaya lang D-E-B-U-G-G-E-R.
At kapag inilagay mo ang isang debugger keyword sa iyong code
at mayroon kang - doon pumunta kami, dalawang Gs.
Kapag inilagay mo ang debugger keyword sa iyong code
at nagpapatakbo ka ng isang debugger
tulad ng Chrome Inspector dito
o sa server side Chrome Inspector, sinasabi ito ng JavaScript
upang itigil ang pagpapatupad sa na linya ng code at pagkatapos ay nagbibigay-daan ito sa iyo
upang magbasa-basa ang natitira ng pagpapatupad ng code.
Kaya kung nag-click ako run code dito, ngayon ito ay humihinto
sa ito debugger linya at maaari ko makita ang OK, narito ang halaga ng CS50
at ito ay isang Nakakuha kurso pamagat, kurso ID,
ito ay nakuha walang mga aralin, walang mga mag-aaral.
At pagkatapos ay maaari kong magbasa-basa ang buong addLecture,
Maaari ko bang makita ito pagtulak sa sa mga aralin,
mouse sa ibabaw na, "Hello World".
Maaari ko talaga sa console gawin ito nang sa gayon ito ay naka-set
sa kasalukuyang bagay na ikaw ay in
Magbigay ng panayam na ito ay "Hello World".
At panatilihin stepping sa pamamagitan ng hangga't gusto ko.
Kung hindi ko nais upang basa
sa dahilan ng isang tawag function na ' Alam ko kung ano na ang nangyayari
gawin ng pagpunta sa addLecture, mayroong ang pindutang ito dito mismo
na nagsasabing "Hakbang sa susunod pag-andar ng tawag, "at sa gayon ako ay maaaring pumunta
sa punto na siguro ako nagtataka tungkol sa isang bagay.
Tulad halimbawa 164-render.
Kaya sa puntong ito, ito ay pagpunta sa ma-render.
Maaari ko bang makita ang template na ito ay ang pinagsama-sama template.
Maaari ko bang makita sa puntong ito ko Dapat ay mayroon kang dalawang mga mag-aaral
at dalawang mga aralin.
At pagkatapos ay mayroong mga prototype chain na ako ay nagre-refer sa.
Kaya ang default na isa na nauuna kasama ang isang object lamang
sa JavaScript sa pangkalahatan,
ito ay may dalawang string halaga ng constructor.
At pagkatapos ay ang mga bago na Nagdagdag ako sa sarili ko
may addLecture, addStudent at pagkatapos ay ang mga katangian
na natatangi sa na ito Halimbawa ng klase
dahil ito ay pinagana may mga bagong keyword.
Kaya sabihin gawin ang isa lamang higit pang mga halimbawa sa ito
at pagkatapos ay gagamitin namin hakbang sa ilan higit pang mga kagiliw-giliw na mga bagay-bagay
sa gilid ng server.
Kaya sabihin sige at buksan ito huling halimbawa na kung saan ay -
sabihin makita, kung saan ay ang code?
Hindi ko alam kung saan ito nagpunta.
OK, mahusay, kami ay maaaring lamang laktawan sa paglipas ng ang code na ito pagkatapos talaga -
oh hawakan, tingin ko Naiwan ako ang style sheet para ang code.
OK, ni gumawa kaya hayaan ito ng kaunti mas malaking.
Sa halimbawang ito, ako na nagpapakita ng kaunti pa sa ang setting
up ang prototype chain,
kaya nagse-set up ang inheritance gamit ang JavaScript.
Kaya sa kasong ito, mayroon kaming catalog na kung saan ay pagpunta
upang mapanatili siguro maramihang mga kurso.
At kaya catalog ay isang addCourse mga pamamaraan.
Kaya ito sumusuri kung ang kurso na ang pumasa sa ay isang halimbawa
siyempre bilang mahihingi may mga bagong keyword.
Kaya kung susubukan mo at ipadala
sa isang bagay na naiiba, ito ay sumigaw sa iyo.
Ang render pamamaraan na habilin render bawat isa sa mga kurso
sa pamamagitan ng kino-compile ang template nito sa ibaba.
At mayroon kaming mga kurso na pag-access
sa kasong ito ang base ng klase para sa indibidwal na mga kagawaran ng mga kurso.
At sa halip ng pagtatakda ng bawat
ng mga kurso na tuldok paraan ng prototype na tuldok
o ari-arian gamit ang pahabain lingkod sa salungguhit library
upang ayusin ng tawag palawigin ito prototype sa lahat
ng mga pag-aari, na kapaki-pakinabang, medyo mas madaling basahin.
At pagkatapos ay down na dito ang paggawa kung ano ang kilala bilang pagtatakda
up ang prototype chain.
Kaya ito ay talagang isang maliit na nakakalito sa mga tao sa unang
at kahit pagkakaroon ng tapos na ito pa rin para sa sandali, ito ay isang uri ng matapang
upang balutin ang inyong ulo sa paligid.
Ngunit huwag ipaalam na matakot sa iyo.
Kaya-set up ako ng isang bagong -
isang ganap na bagong klase Bagay dito, CS.
At sa constructor,
Ako na nagsasabi kurso ilapat ang mga argumento.
Kaya mga argumento ay isang espesyal na halaga hulaan ko maaari mo itong tumawag
sa JavaScript, ang keyword na kung saan ay mayroon ng lahat
ng lahat ng bagay na pumasa sa kahabaan ay mga argumento
na function na ay magagamit gamit ang mga argumentong tumawag,
gamit ang mga argumentong keyword.
Kaya bilang ako sa pagtawag may kurso dot-apply,
ito ay ang kasalukuyang konteksto na kung saan CS ay tinatawag na.
Kaya kapag tumawag sa diyos ko ito gamit ang mga bagong ito ay isang - ito ay isang halaga ng CS.
At ako na nagsasabi tumawag ito Siyempre paraan up dito.
Oh paumanhin - tawagan ito paraan ng kurso dito mismo
ngunit itakda ang halaga ng ito maging anuman ang halaga
ng ito ay dito mismo.
Kaya nagbibigay-daan sa ang mag-apply ng keyword mo sa uri ng palitan ng estado ang
na kung saan ito ay kung paano jQuery ang pinapayagang uri-uriin ng paglipat
out na ito sa iyo bilang ka ng pagpunta sa pamamagitan ng
at gumawa ng isang elemento ng DOM sa halip na ang jQuery bagay.
Kaya ngayon pupuntahan ko upang i-set isang pansamantalang pag-andar
na kung saan ay grab ang prototype ng kurso.
At uri ng itakda ito sa prototype nito
at pagkatapos ay itakda ang prototype sa CS function na bagay
sa isang bagong pagkakataon ng na.
Kaya talaga ako sinasabi sa halip -
kung down na dito ko ginawa CS tuldok prototype ay katumbas ng bagong kurso.
Pagkatapos ay magiging pagtawag sa lahat ng bagay
sa ganitong constructor function,
saan ko gagawin hindi kinakailangang nais na.
Kaya lahat ako paggawa ay uri ng paglikha halos
tulad ng isang pangalawa pagpapaandar na ay magkakaroon ng mga kurso prototype
nito at pag-uuri ng gayahin ang prototype -
ang kurso ngunit nang hindi ginagawa lahat ng bagay sa constructor
at itakda na sa prototype.
At pagkatapos ay ako lamang pagdaragdag kaya ang kagawaran
sa kasong ito ay Computer Agham para sa CS bagay.
At pagkatapos ay mayroon akong isang uri ng isang tulay na bersyon ng paggawa na.
Hindi ito gumagana sa IE9.
Kaya na ang dahilan kung bakit gusto ko upang ipakita ang uri ng kung paano -
ano ito ay ginagawa sa ilalim ng hood.
Ngunit maaari mo itong itakda up sa parehong paraan
kung saan Econ ay katumbas ng pag-andar Siyempre ilapat ang mga argumento
at pagkatapos ay sabihin Econ tuldok prototype ay katumbas ng bagay na tuldok CreateCourse
tuldok prototype.
Kaya ito ay lumilikha ang isang bagong bagay na lang ang prototype
para sa mga kurso at pagkatapos ay itakda ang departamento doon.
Kaya magtakda ng isang ngayon palayain ni lamang debugger dito at mag-click sa run.
May pumunta namin.
Kaya CS164 maaari naming makita ang prototype chain na kailangan namin ang
mga ari-arian na kung saan ay itakda sa constructor.
Kaya mga halaga ng mga na-set at pagkatapos ay sa prototype chain
para sa CS sa bagay na ito ay nagkaroon ng itakda ang departamento ng Computer Science.
At pagkatapos sa pinagbabatayang prototype chain,
pagkatapos ay mayroon kaming ang lahat ng mga pamamaraan at mga pag-aari
na natatangi sa ang kurso na object.
At pagkatapos ay mayroon kaming ang batayang mga bagay.
Kaya na uri ng isang mabilis Halimbawa ng prototype chain.
At bilang maaari mong makita dito, may ang dalawang mga halaga sa bawat departamento.
Kaya mayroong kagawaran ng computer science
at pagkatapos kagawaran hindi nakalista na sinabi ko
bilang default na halaga dito.
Kaya ang prototype chain ay talagang isang isa-isa lang
listahan link.
At bilang ito sumusubok na makahanap ng isang ari-arian,
Makikita ito magsisimula sa tuktok halaga antas.
Kaya kung ano ang mga tinukoy sa ang constructor function na
at pagkatapos ay isang uri ng pumunta pababa ang prototype chain mula doon.
Kaya dahil nakita ito, kaya -
kung dito mismo, sinasabi ko CS50 tuldok Department,
Makikita ito sabihin Computer Science.
Ngunit kung sinasabi ko var -
[I-pause]
Ngunit kung sinasabi ko makataong sining ay katumbas ng bagong kurso
at pagkatapos ay sabihin ko makataong sining tuldok kagawaran,
Makikita ko ba kung hindi nakalista kagawaran dahil nagpunta ito sa unang ang -
Maaari ko bang tingnan ang mga prototype chain dito talaga.
Kaya muna ito napunta sa mga kurso Bagay at nakita doon wala ang
sa prototype chain sa ang level na ito para sa mga kagawaran
o para sa mga halaga departamento kaya pagkatapos ito jumps sa susunod na antas,
ang kurso at mga hitsura ipasa doon at nahahanap nito.
Kaya ito lang ang uri ng mga tulad ng napupunta down mula sa itaas pababa
at iyon ang uri ng isang bagay na natatangi
tungkol sa JavaScript ay na maaari mong baguhin ang anumang
ng mga halagang ito sa anumang naibigay na oras.
Kaya sa ang constructor o sa isang indibidwal na mga pamamaraan sa bagay
kung gusto ko upang i-set ito departamento sa isang bagong bagay,
o kung gusto ko kahit i-set alinman sa mga function
na ay umiiral na
sa isang bagong bagay, Ako ay libre upang gawin iyon.
Kaya ngayon mayroon akong CS50 tuldok addLecture, mukhang iyon.
At kung gusto ko upang i-set ito sa Lamang ay katumbas ng CS50 addLecture
upang blangko ang function.
Pagkatapos ngayon ang maaari kong makita ito lang ibang-iba
na kung saan hindi mo magawang na gawin ang isa pang wika
kung saan mayroon kang isang stricter class na batay inheritance
at lahat ng bagay ay uri ng set up.
JavaScript ay napaka, napaka nababaluktot patungkol sa na.
OK, na tumalon pabalik ipaalam sa mga slide.
Kaya kung halimbawa mo ang palaging gusto ng isang function
upang magkaroon ng isang partikular na itakda ang halaga na ito para dito.
Maaari mong tawagan ang function na tuldok magbigkis
at itakda kung ano ang halaga ng ito ay dapat na.
Maaari mong isipin na ito bilang -
"Sinusubukan ko mag-isip ng isang magandang real Halimbawa mundo ngunit ",
kung gusto mong protektahan ang iyong code
laban sa isang tao potensyal na pagtawag ito sa isang halaga ng
na hindi magiging ito.
Tulad halimbawa AJAX callback tulad ng labis o error.
Yaong ay karaniwang hindi na tinatawag na
na may magandang semantiko halaga ng mga ito.
At ikaw ay tulad ng, "OK, ako palagi nais ito upang maging ang halaga
ng mga kurso sa bagay na na ako nagtatrabaho sa.
O kaya ang view na ako nagtatrabaho na may sa aking code
na kumakatawan ito DOM node, maaari kang magtakda -
maaari kang sumailalim sa konteksto na ito at pagkatapos ay kapag ang tawag dito mamaya
sa pamamagitan ng jQuery at ito ay walang magandang halaga ng mga ito magkakaroon ito manatili
sa kung ano ang iyong bounded nito.
Pagkatapos ay mayroong pag-andar ng tawag ay maaari mong tukuyin ang konteksto
at tukuyin ang anumang mga variable dami ng mga argument.
At pagkatapos ay mayroong pag-andar apply na maaari mong pumasa
sa konteksto at pagkatapos ay alinman sa isang array
o ang mga argumento ng mga bagay na Nabanggit ko tulad ng nakikita mo doon.
At ang mga argumento sa anumang function na kang tumawag,
Maaari mo lang i-type ang ang salitang "argumento"
at magkakaroon ito ng lahat ang mga argumento.
Mayroon itong "haba" ari-arian
na kung saan ay kung paano maaaring argumento ay talaga ang pumasa sa mga pamamaraan na
dahil sa JavaScript maaari mong uri-uriin ng tawag
may variable na numero ng mga argumento.
Ito ay kapaki-pakinabang para sa sinasabi kung ito ay may isang argument,
pagkatapos ay sundin ang code na ito landas.
Kung nagkaroon ito ng dalawang, maaari mong nais na sundin ang isa pang paraan.
Pinapayagan nito upang mayroon kang talaga pabagu-bagong API para sa iyong mga pamamaraan.
Maaari mong isipin na may jQuery
tulad ng kapag mayroon kang dollar na dot sa o magbigkis.
At ito uri ng mga gumagana iba't ibang bagay
bilang sa kung inilagay mo ang isa argumento o dalawa o tatlong
o simulan ito sa isang function.
Ito ay gumagamit ng mga argumento ari-arian
at ang mga argumento haba ng maraming mga kaso
upang magkaroon ito magic pag-andar mangyari.
Ang mga bagay na hindi mo maaaring gawin sa mga argument ay gamitin ito lamang
sa pamamagitan ng default na bilang isang array.
Kaya maaari mong sabihin argumento tatlong at itakda ito sa isang bagay
bilang maaari mong gamit ang array pagtatalaga.
Maaari mong gamitin ang - ng maraming sa mga pamamaraan sa guhitan sa ilalim
para sa alinman sa mga koleksyon o para sa pakikipagtulungan sa mga array,
maaari mong pumasa sa mga argumento at sasabihin nito mapagtanto
na ito ay isang argumento bagay at uri
ng alagaan na para sa iyo.
Ngunit kung nais mong gamitin ang mga argument na ang nakapasa
sa pamamagitan ng isang function bilang isang array,
maaari mong gamitin ang salungguhit dot dalawang array.
Isa sa mga numero ng utility function
na bumuo ng in sa salungguhit.