[MIZIK jwe] Doug Lloyd: Se konsa, pa kounye a nou ap fin vye granmoun avantaj nan pwogram entènèt, dwa? Apre sa, nou te kouvri plizyè lang nan videyo endividyèl elèv yo. Epi, koulye a kite a fè yon sèl plis, JavaScript. Premye bon nouvèl la, JavaScript se yon pwogram modèn lang anpil tankou PHP ki gen se sentaks sòti nan C, se konsa sa a, se yon bon plas yo kòmanse. Li nan sou laj tankou PHP, kòm byen, li te gen te alantou sou 20 ane sa yo. Li te envante alantou menm tan an kòm PHP. Apre sa, JavaScript se aktyèlman trè fondamantal nan eksperyans nan itilizatè a entènèt la. An reyalite, gen twa lang ke mwen ta ka di sòt de fè moute a eksperyans itilizatè a kominike ak sit wèb la, html, CSS, ak JavaScript. Se konsa, kounye a kite a pale yon ti kras sou JavaScript. Move nouvèl yo, menm si, ak JavaScript se ke li kouche yon anpil nan règ pou tèt li, ak Lè sa a li kraze yo. Ak JavaScript ka aktyèlman ap kalite defi pou aprann, pou paske li nan kontrèman C ak PHP, ki fè yo trè estriktire epi yo gen règ trè rijid pou konbyen bagay sa yo ka travay. JavaScript gen kalite a vinn konsa fleksib ke petèt bagay yo pa ale nan travay fason nou atann yo, e petèt nou reyèlman pa ka aprann lang premye pwogram nou an kòm yon JavaScript. Se konsa, petèt paske li fè sa ki pa mete tèt li nenpòt règ, epi li pa fè sa vrèman aplike bon abitid kodaj. Men koulye a, nou te èspere ke devlope kèk bon abitid kodaj, epi pou nou ka kòmanse plonge nan JavaScript yon ti kras. Pou ekri JavaScript, menm jan ak ouvèti moute yon dosye C ak yon dot C ekstansyon oswa yon dosye PHP ak yon ekstansyon dot PHP, tout sa nou bezwen fè se louvri moute yon dosye ak ekstansyon dosye dot nan js. Nou pa bezwen gen nenpòt espesyal separateur tankou nou te fè nan PHP. Ki sòt de ang bracket kesyon mak PHP ke nou ap itilize yo de sa, wout la nou di navigatè nou an ki sa nou genyen se JavaScript se pa ki gen ladan li nan yon tag HTML, epi nou pral wè yon ti kras sou ki jan fè sa nan jis yon moman. Bagay a lòt ki fè JavaScript diferan, menm si, se ke li kouri bò kliyan. Se konsa, sonje ak PHP ki nou pa janm te ka reyèlman wè PHP a ki souliye yon sit entènèt. Si nou tout tan tout tan a nan paj sous, nou ta sèlman wè html ki te ki te pwodwi pa ki PHP. Men, JavaScript kouri bò kliyan. JavaScript ou kouri sou òdinatè ou. Epi sa a, poukisa ou kapab fè bagay renmen ajoute blockers. Dwa? Piblisite bloke se anjeneral fè pa touye tout nan JavaScript nan ki ap kouri sou yon sit entènèt patikilye. Epi paske li ta gen yo kouri sou bò kliyan machin ou, ou ka jis sispann nan JavaScript pou kouri nèt. Sa vle di tou ke lè ou sèvi ak yon sit entènèt ki gen ladan JavaScript, ou gen yo voye sous la JavaScript Kòd kòm yon pati nan repons ou http nan kliyan an lè yo mande li. Se konsa, ou ta ka pa vle sèvi ak JavaScript fè bagay sa yo reyèlman sansib tankou enfòmasyon pase sou modpas itilizatè yo 'tounen ak soti, paske yo ap aktyèlman ale nan resevwa tout nan kòd la sous, pa sèlman html sa a, ki pwodwi, tankou ta dwe ka a ak di PHP. Se konsa, kouman fè nou mete JavaScript nan html nou an kòmanse ak? Oke, menm jan ak CSS, aktyèlman, se sòt de ki jan nou fè l 'isit la. Avèk CSS nou gen Tags style. Ak andedan nan tout sa yo Tags style, nou ka defini yon fèy style CSS. Menm jan an tou ak JavaScript nou ka louvri moute script Tags, yon lòt tag html nou pa t ' pale sou nan videyo html nou an, epi ekri JavaScript nan ant moun Tags script. Epitou menm si, tankou CSS, nou te kapab konekte nan deyò dosye CSS e ki rale yo nan pwogram nou an ki fason. Avèk CSS nou kapab tou, eskize mwen, ak JavaScript nou ka tou presize sous la atribi nan tag a script fè rapò ant nan JavaScript separeman, se konsa ou pa fè sa gen yo ekri l 'nan ant script Tags, nou ka lyen l 'nan lè l sèvi avèk ki tag script kòm byen. Epi jis menm jan ak ka a ak CSS kote nou rekòmande ke li te pwobableman nan pi bon enterè ou a ekri CSS ou a nan yon dosye separe nan ka ou bezwen chanje l ', Menm jan an tou fè nou rekòmande pou ke ou ekri ou JavaScript nan dosye separe epi sèvi ak sous la script Tags atribi mare JavaScript ou nan html ou, paj entènèt ou an. Se konsa, varyab JavaScript, nou pral kòmanse ap pale de sentaks la isit la. Epitou, n ap ale nan sa a kalite byen vit, paske nou te fè sa a nan PHP, se konsa sa a ta dwe tout dwe trè yo konnen yo. Se konsa, varyab nan JavaScript yo trè menm jan ak PHP varyab. Gen nan pa gen Dvi kalite, ak lè ou prezante yon varyab, ou prefiks l 'ak mo kle a var. Nan PHP nou ta fè yon bagay tankou sa a, siy dola x. Sa a ki jan nou endike yon varyab, men pa, nou pa mansyone kalite a nan varyab la nan tout. Nou ta di yon bagay tankou dola siy x egal 44 nan PHP. Si nou t ap fè a menm bagay nan JavaScript, nou ta ka di var x egal 44. Se konsa, var se sòt de wout nou nan entwodwi yon varyab. Sa a petèt yon ti jan pi plis entwisyon pase jis dola varyab siy. Yon fwa ankò, depi gen nan pa gen kalite done, nou te ka fè sa ak nenpòt ki kalite done, strings, nenpòt lòt bagay ta tout gen var. Kondisyonal, tout nan nou an fin vye granmoun zanmi soti nan C ak PHP yo toujou disponib, konsa nou gen si, lòt si, lòt bagay, switch ak kesyon make kolon. Bouton rete kòm fleksib kòm li te nan PHP, men tout moun sa yo w ap abitye avèk pa kounye a. Apre sa, Menm jan an tou ki gen pasan yo favorites yo fin vye granmoun nan ti tan, fè pandan y ap, ak pou toujou disponib yo ban nou. Se konsa, deja nou konnen yon anpil nan nan debaz JavaScript sòt de fondamantal jis pa vèti nan gen byen yon ti jan fè moun konnen kounye a sou C ak PHP. Ki sa ki sou fonksyon nan JavaScript? Oke, menm jan ak PHP chak fonksyon se prezante ak mo kle a fonksyon. Ou di fonksyon, ak lè sa a ou kòmanse defini fonksyon ou yo. Ki sa ki nan yon ti kras diferan sou JavaScript, menm si se kapasite nan gen sa ki rele yon fonksyon anonim. Se konsa, ou ka defini fonksyon ki pa gen yon non. Sa a se yon bagay nou reyèlman pa gen pou wè anvan. Nou pral reyèlman itilize konsèp la nan yon fonksyon anonim yon ti kras pita nan sa a videyo, paske li 'tout fè yon ti kras pi plis sans nan yon kontèks lè nou wè l 'nan yon sitiyasyon an patikilye ke mwen te fabrike isit la. Men, kite a jis pran yon gade nan sa ki yon senp JavaScript fonksyon ta ka sanble. Se konsa, mwen te ale pi devan epi louvri moute IDE CS50 mwen epi mwen te deja kouri Apache yo kòmanse kouri sèvè m 'yo. Apre sa, mwen gen sa a ranpli louvri rele home.html. Apre sa, mwen pral rale nan yon ti jan isit la. Apre sa, fondamantalman, ou ka wè nan Home.html se jis yon pakèt moun sou bouton ki sanble. Apre sa, mwen reklame nan tèt la isit la ke sa a se seksyon nan JavaScript materyèl yo. Se konsa, gen nan yon pakèt moun sou bouton isit la, men sa ki bouton sa yo aktyèlman fè? Oke, nou pral tèt sou nan IED m 'yo, epi mwen te home.html louvri isit la. Nan kòmansman an trè, isit la nan kote mwen ki lye ak nan tout nan dosye sous JavaScript mwen. Dwa? Se konsa, mwen gen anonymous.js, clock.js, Mwen lè l sèvi avèk atribi nan sous nan tag nan script fè rapò ant nan dosye-a. Se konsa, mwen pa t 'ekri nenpòt JavaScript dirèkteman nan sa a ranpli, men mwen te rale nan tout nan JavaScript mwen te ekri separeman. Men, si nou desann isit la, sa a ta dwe yon ti jan yo konnen yo tout gade ak yon ti kras nan nouvo sentaks. Nou gen la a tag header pou fonksyon ak Lè sa a yon bouton. Mwen gen yon D 'sa a, se yon bouton kalite, ak aparamman lè m 'klike sou li, Mwen pral rele kèk fonksyone alèt dat. Lè sa a se ki jan nou ka sòt de melanje moute yon ti kras nan JavaScript ak HTML. Yo aktyèlman jwe trè joliman ansanm, e konsa aparamman lè Mwen klike sou bouton sa-a, mwen pral yo rele kèk dat alèt fonksyon. Apre sa, Menm jan an tou, mwen defini konpòtman pou tout moun nan bouton sa yo lòt ki yo sou ki paj home.html, ki nou pral kenbe retounen nan kou a pandan videyo sa a. Men, kite a ale tounen moute isit la ak pran yon gade a clock.js, ki se nan JavaScript dosye ke mwen te ekri ki gen fonksyon sa a premye nou ap ale nan pran yon gade nan. Kòm ou ka wè, mwen kòmanse JavaScript mwen fonksyone ak fonksyon nan mo kle, epi mwen te bay yon sèl sa a yon Non, sa yo rele alèt dat. Anndan nan la, mwen aparamman kreye yon nouvo varyab lokal rele dat aktyèl la. Apre sa, mwen pral bay yon egal a yon nouvo dat. Apre sa, nou te ka jwenn nan yon anpil nan detay tankou sa ki yon dat se, ak reyèlman JavaScript se konsa gwo ke nou pa kapab pètèt kouvri tout bagay nan yon sèl videyo. Men, sufi li vle di, sa a se pral pou li retounen nan m 'yon atik done ki ankapsul dat aktyèl la ak tan. M 'ap estoke ki nan yon varyab ke mwen se aparamman ale nan alète dat aktyèl la. Oke, sa fè alèt aktyèl dat gade tankou? Se pou nou pran yon gade nan dosye a tèt li tounen sou nan fennèt la navigatè. Se konsa, ankò, sa a se bouton an ke mwen te mare nan, fonksyon sa a yo te rele. Apre sa, mwen klike sou li gen ak gade sa li te fè, li okouran. Li déja moute sa a sòt de bwat di m 'ke tan an kounye a se, aparamman li nan 4 Novanm nan 10:43:43 nan maten an. Men, si mwen klike sou li ankò, kounye a li nan yon kèk segond apre, dwa? Se konsa, ki nan tout fonksyon sa a fè. Lè m 'klike sou bouton sa a, li Pops leve yon mesaj alèt m '. Se konsa, gen nan reyèlman pa twòp nan fonksyon sa a, se diferan de PHP, jis yon ti jan nan nouvo sentaks ki vini ak ap travay ak JavaScript. Ranje nan JavaScript yo trè dwat. Deklare yon etalaj, ou sèvi ak sentaks la parantèz kare ke nou ap abitye ak soti nan PHP. Apre sa, menm jan ak PHP, nou tou ka melanje kalite done. Se konsa, sa a etalaj, tou de nan ranje sa yo ta dwe parfe lejitim JavaScript. Youn ki nan tout nonm antye relatif, ak youn ki se melanje moute kalite done diferan. Ki sa ki nan yon bagay trè diferan nan JavaScript, menm si? Sa a nosyon de yon objè. Se konsa, petèt ou te tande pale de objè pwogramasyon oryante. Nou pa fè yon anpil nan l 'nan CS50, men nou pral fè yon ti kras nan li isit la nan yon kontèks JavaScript. Koulye a, JavaScript gen kapasite nan konpòte kòm yon pwogram objè oryante lang, men li se pa tèt li sèlman yon objè oryante lang programmation. Lè sa a ankò vini tounen nan poutèt sa mwen te di, li ka trè difisil yo aprann JavaScript kòm pwogram premye ou lang, paske li fè sa ki pa reyèlman anfòm yon paradigm patikilye. C sou lòt men an se yon lang programmation fonksyonèl. Si nou vle, fonksyon yo sòt de nonm sa a bòs nan travay gwo, dwa? Yo dikte sa k ap pase tout lòt bagay. Nou vle chanje varyab, nou rele fonksyon. Nou fè bagay sa yo fonksyon. Objè olye de sa, nan yon objè oryante lang, objè sòt de vin zetwal la ak fonksyon vin sòt de segondè. Men, sa ki se yon objè, ki sa se sa a nosyon nan yon objè? Bon, si li te ede, panse sou li an premye sòt de tankou yon estrikti C oswa yon struct ke nou te aprann enfòmasyon sou anvan. Nan C, yon estrikti gen yon kantite chan sa yo, e petèt kounye a nou ta ka kòmanse rele sa yo jaden yo pwopriyete. Men, pwopriyete yo pa janm reyèlman kanpe sou pwòp yo, dwa? Si m 'defini yon estrikti pou yon machin tankou sa a ak de sa ki annapre yo jaden oswa pwopriyete, youn yon nonb antye relatif pou ane a nan machin nan ak yon lòt yon karaktè 10 fisèl pou modèl la nan machin lan, Mwen kapab di yon bagay tankou sa a, Mwen kapab deklare yon varyab nouvo nan kalite herbie struct machin. Lè sa a, mwen kapab di yon bagay tankou herbie.year egal 1,963, ak herbie.model egal Beetle. Se byen. Mwen lè l sèvi avèk jaden yo nan la kontèks nan estrikti a, men mwen te kapab pa janm jis di yon bagay tankou sa a. Dwa? Mwen pa ka sèvi ak non nan jaden endepandan de estrikti an. Li nan sòt de yon bagay fondamantal. Se konsa, ke yo te jaden fondamantal nan estrikti C yo trè menm jan ak pwopriyete ke yo te fondamantal nan JavaScript objè yo. Men, sa ki fè yo patikilyèman enteresan se ke objè ka gen tou sa yo rele metòd yo, ki se reyèlman jis yon mo anpenpan pou fonksyon ki se nannan nan objè a kòm byen. Se konsa, li yon fonksyon ki kapab fèt sèlman rele nan yon kontèks la nan yon objè. Yon Se sèlman bagay ki te defini sa a fonksyon andedan nan li yo, si ou panse sou yon struct, fonksyon an se defini andedan moun defini aparèy òtopedik Curly nan estrikti an. Se konsa, li sèlman vle di yon bagay nan estrikti a. Epi sa a, sòt de sa n ap fè isit la ak objè ak metòd. Li nan fondamantalman tankou nou ap defini yon fonksyon ki sèlman fè sans sou yon objè patikilye, epi pou nou rele ke yon metòd pou objè a. E nou pa janm ka rele ke fonksyon endepandan de objè a, jis tankou nou pa ka di ane oswa modèl endepandan de struct a nan C. Se konsa, pwogram fonksyonèl modèles sanble yon bagay tankou sa a. Fonksyon ak Lè sa a lè ou pase nan objè a kòm yon paramèt. Nan yon pwogram objè oryante lang, sa a sòt de vin ranvèrse, epi nou ta panse osijè de li renmen sa a, object.function. Se konsa, li sòt de ki dot operatè ankò qui ke li nan kèk sòt de pwopriyete oswa atribi nan objè nan tèt li. Men, sa a se sa yon objè oryante lang programmation ta ka fè yo fè yon fonksyon rele sou yon metòd, ankò, ki se jis yon mo espesyal pou yon fonksyon ki se nannan nan yon objè. Sa a se sa ki sentaks ta ka sanble. Se konsa, nou pral kòmanse wè kèk nan sa a nan yon kontèks la nan JavaScript. Ou ka panse tou sou yon objè sòt de tankou yon etalaj asosyatif, nou ap abitye ak soti nan PHP. Sonje yon etalaj asosyatif pèmèt nou gen valè kle pè, olye pou ki gen endis 0, yon sèl, de, twa, ak sou sa tankou nou ap itilize yo soti nan C ranje. Ranje asosyatif ka kat jeyografik mo, tankou nan videyo a PHP, nou te ap pale de sila nan pitza. Se konsa, nou te gen yon etalaj rele pitza, epi nou te gen fwomaj te yon kle yo ak $ 8.99 nan te valè, ak Lè sa a pepewoni te yon kle yo, $ 9.99 se te yon valè, ak sou sa. Se konsa, nou ka panse tou sou yon objeksyon sòt de menm jan ak yon asosyatif etalaj. Se konsa, sentaks sa a isit la ta kreye yon objè nouvo rele herbie ak de pwopriyete andedan nan li. Ane, ki asiyen valè a 1963, ak modèl, ki se asiyen fisèl la Beetle. Apre sa, remake isit la ke mwen lè l sèvi avèk quotes sèl nan JavaScript. Ou kapab sèvi ak quotes yon selibatè oubyen doub lè w ap pale de strings. Se jis konvansyonèl ka a ki pi fò fwa lè w ap ekri JavaScript, ou jis itilize quotes sèl. Men, mwen ta ka itilize quotes doub isit la, ak ki ta ka parfe amann kòm byen. Se konsa, sonje ki jan nan PHP nou te gen sa a nosyon nan yon pou chak bouk ki ta pèmèt nou repekte sou tout nan valè a kle pè nan yon asosyatif etalaj, paske nou pa t 'gen kapasite sa a yo repekte a 0, yon sèl, de, twa, kat, ak sou sa? JavaScript gen yon bagay trè menm jan an, men li pa nan rele yon pou chak bouk, sa yo rele yon pou nan pasan. Se konsa, si m 'te di m' tankou sa a, pou kle var nan objè, sa a, se sòt de menm jan ak di pou chak yon bagay kòm yon bagay. Men, tout m ap fè isit la se iteration nan tout nan kle yo nan objè m 'yo. Apre sa, andedan nan Curly a aparèy òtopedik a, mwen ta itilize objè parantèz kare kle, al gade nan valè a nan ki kote kle. Altènativman, gen nan menm yon lòt apwòch. Si m 'jis pran swen sou nan sèlman valè, mwen kapab di pou kle nan objè, ak jis sèvi ak kle anndan an. Se konsa, pou kle var nan objè, mwen gen yo sèvi ak objè parantèz kare kle andedan riban an. Pou kle var nan objè, mwen kapab jis itilize kle andedan riban a, paske mwen se jis espesyalman ap pale de valè yo a. Se konsa nou petèt pran yon gade nan diferans ki genyen jis byen vit montre w diferans ki genyen ant kat nan ak pou a ak yon trè espesifik etalaj, ki nou gen isit la, semèn etalaj. Se konsa, mwen gen jwenn yon nouvo etalaj ke mwen te ranpli avèk sèt strings, Lendi, Madi, Mèkredi, Jedi, Vandredi, Samdi, Dimanch. Apre sa, mwen vle kounye a repekte nan etalaj sa a, enprime soti sèten enfòmasyon. Si m 'sèvi ak yon pou nan bouk ekri ak lèt ​​detache soti enfòmasyon, ki sa ou panse mwen pral jwenn? Oke, kite la pran yon gade. Apre sa, anvan nou sote sou bò fennèt navigatè m 'yo, jis konnen ke console.log se sòt de yon sèl fason pou fè yon F ekri an lèt detache nan JavaScript. Men, ki sa ki konsole a? Oke, sa a, se sa nou ap ale yo ale pran yon gade nan kounye a. OK, se konsa nou ap tounen isit la nan fenèt navigatè m 'yo, ak mwen pral yo louvri moute zouti pwomotè mwen. Yon fwa ankò, mwen jis frape F12 yo louvri moute zouti pwomotè. Apre sa, remake ke isit la nan la tèt mwen te chwazi konsole. Se konsa, sa a se nosyon a nan yon konsole pwomotè, epi li pral pèmèt nou enprime enfòmasyon soti, sòt de tankou tèminal la, men kòm ou pral wè yon ti kras pita, nou ka tape enfòmasyon tou nan yo kominike avèk paj entènèt nou an. Mwen pral rale nan yon ti jan isit la, ak mwen se pral kounye a klike sou pou nan egzamen an. Apre sa, kat nan test-- Mwen pa pral montre w kòd la pou li kounye a, men ou pral jwenn li si ou download kòd la sous ki ki asosye avèk sa a video-- se jis ke pou nan bouk ke nou te wè jis yon dezyèm de sa sou glise la. Se konsa, mwen pral klike sou ki bouton, ak sou isit la, isit la nan sa ki te enprime soti nan la konsole, 0, yon sèl, de, twa, kat, senk, sis. Mwen pa t 'enprime soti enfòmasyon ki andedan moun kote etalaj, paske mwen itilize yon pou nan bouk. Ak andedan kò a nan riban an, mwen jis enprime soti kle pa objè kle. Men, si mwen kounye a klè konsole m ', mwen chanje a pou nan egzamen, ak kat nan egzamen M 'ap di mwen sèvi ak pou nan riban olye pou epi enprime soti kle, si mwen klike sou sa, koulye a, mwen ap resevwa nan eleman aktyèl andedan nan objè m ' oswa etalaj m 'ki nan ka sa a. Etalaj mwen nan jou semèn. Mwen enprime soti Lendi, Madi, Mèkredi. Se konsa, sa a, se diferans ki genyen ant yon pou nan bouk, ki simagri soti jis kle yo si ou jis sèvi ak kle andedan nan kò a nan riban an, ak yon pou nan riban, ki simagri soti valè yo si ou itilize jis kle andedan kò a nan riban an. Tout dwa, ki jan nou kounye a kòmanse anchene strings e petèt konfonn kèk varyab ak entèpolasyon tankou nou te kapab fè nan PHP? Bon, nou ap trè abitye ak sa a soti nan PHP. Sa a se ki jan nou ta fè l 'lè l sèvi avèk la dot operatè anchene strings. Nan JavaScript, menm si, nou aktyèlman sèvi ak yon bagay rele operatè a plis, ki se petèt menm yon ti jan ti kras pi plis entwisyon, dwa? Nou ap ajoute yon pakèt moun nan strings ansanm. Se konsa nou tèt tounen sou yo ak wè sa ki sa a pral enprime si nou ap eseye enprime soti tout enfòmasyon ki nan semèn etalaj. Tout dwa, se konsa isit la anba anba fisèl Anchènman, Mwen gen de opsyon, bilding fisèl V1 ak Lè sa a bilding fisèl V2. Epitou, n ap wè poukisa nou bezwen V2 nan yon dezyèm fwa. Men, mwen pral klike sou fisèl V1 bilding, ki se kòd la nou te jis pran yon gade nan, console.log la ak tout nan pluses yo. Ann wè si sa a simagri konnen ki sa ki nou espere. Lendi se nimewo jou 01 nan semèn nan, Madi se nimewo jou 11 nan semèn nan. Oke, ki sa mwen te ap fè te gen jwenn l 'bay enprime soti Lendi se nimewo jou yon sèl, Madi se nimewo jou de. Men, li sanble tankou mwen se toujou enprime soti yon sèl. Oke, poukisa se sa? Oke, li vire soti, pran yon lòt gade nan nivo sa a brib ti kras nan kòd isit la. Avi ke nou ap lè l sèvi avèk plis nan operatè nan de kontèks diferan. Se konsa, isit la nan kote petèt bagay ke nou te kalite te di: oh, li la tèlman gwo. Nou pa fè fas ak kalite done ankò. Men, isit la nan kote lefèt ke nou pèdi done kalite ka aktyèlman ap yon ti jan nan yon pwoblèm pou nou. Kounye a ke se operatè a plis itilize yo anchene strings epi ajoute nimewo ansanm, JavaScript gen fè pi bon devine li yo tankou sa ki mwen vle li fè pou mwen. Ak nan ka sa a, li dvine sa ki mal. Li jis anchene jou, ki ta dwe 0, yon sèl, de, twa, kat, senk, oswa sis, ak Lè sa a li jis anchene ki ak Lè sa a anchene yon sèl. Li pa t 'aktyèlman ajoute yo ansanm. Se konsa, sa yo lang, PHP ak JavaScript, ki résumés lwen sa a nosyon nan kalite, ou pa gen fè fas ak li ankò. Yo toujou gen kalite anba kapo machin lan. Apre sa, nou kapab, nan sitiyasyon tankou sa a, ogmante ke reyalite lè li di yon bagay tankou petèt sa a, ki ap di JavaScript, pa nan fason sa a, trete sa a kòm yon nonb antye relatif, pa trete li kòm yon fisèl, menm menm si nou ap melanje ansanm strings ak nonm antye relatif isit la. Se jis youn nan bagay sa yo ke li sanble tèlman gwo nan yon kontèks ke nou pa bezwen fas ak kalite ankò, men pafwa ou pral kouri antre nan yon sitiyasyon egzakteman menm jan ak sa a kote lefèt ke ou pa gen kontwòl sou kalite ka byen tounen mal sou ou si ou pa fè atansyon. Se konsa, si nou pòp tounen nan men IDE, mwen ale nan klè soti konsole m 'ankò, ak mwen pral klike sou fisèl bilding vèsyon de, ki se kote mwen sèvi ak sa fonksyon analyzes int. Koulye a, li a enprime soti enfòmasyon ke mwen tann. Lendi a yon sèl nimewo jou, Madi se nimewo jou de, ak sou sa. Se konsa, kite nan pale sou fonksyon ankò. Mwen te pwomèt nou ta pale sou anonim fonksyon, e kounye a, kontèks la pou sa te finalman rive. Se konsa, anvan nou fè sa, se pou yo pale ankò sou ranje pou jis yon dezyèm fwa. Se konsa, ranje yo se yon espesyal ka ta gen yon objè. An reyalite, tout bagay nan JavaScript se aktyèlman yon objè. Se konsa, fonksyon yo se yon ka espesyal nan yon objè, nonm antye relatif yo se yon espesyal ka ta gen yon objè, men ranje espesyalman gen yon nimewo nan metòd. Sonje paske yo ap objè, yo ka gen pwopriyete ak metòd. Yo gen yon nimewo nan metòd ki ka aplike nan moun ki objè. Genyen yon metòd rele gwosè, array.size, ki va tounen vin jwenn ou jan ou ta ka atann nimewo a nan eleman nan etalaj ou yo. array.pop, sòt de tankou nosyon nou an nan eklate nan nan yon chemine, si ou sonje soti nan videyo pil nou an, retire eleman ki sot pase a soti nan etalaj la. array.push ajoute yon eleman nouvo nan fen a nan yon etalaj. array.shift se sòt de tankou DQ, li rakor soti eleman an trè premye nan yon etalaj. Men, gen nan tou yon lòt espesyal metòd pou yon etalaj rele kat jeyografik. Lè sa a se sòt de yon enteresan konsèp. Se konsa, sa se lide a nan yon kat jeyografik? Ou ap aktyèlman wè sa a nan plizyè lòt lang yo, epi nou pa ap pale de yon sòt de kartograf kat isit la, nou ap pale de yon fonksyon kat. Nan kontèks la nou ap ap pale de isit la, yon kat jeyografik se yon operasyon espesyal nou ka fè sou yon etalaj pou aplike pou yon fonksyon patikilye bay chak eleman nan ki etalaj. e konsa nou ta di nan ka sa a, petèt array.map, ak andedan nan li, nou ap pase nan kat jeyografik se yon fonksyon ke nou vle yo dwe aplike nan chak eleman sèl. Se konsa, li sòt de analoji nan lè l sèvi avèk yon bouk repekte sou chak eleman epi aplike yon patikilye fonksyone nan chak eleman, jis JavaScript sa a te bati nan nosyon nan yon kat ki ka aplike. Lè sa a se yon kontèks gwo yo pale sou yon fonksyon anonim. Se konsa nou di nou gen sa a etalaj de nonm antye relatif. Yo rele li nom, epi li te resevwa senk an bagay sa yo nan li, yon sèl, de, twa, kat, senk. Koulye a, mwen vle nan kat jeyografik kèk fonksyon sou sa a etalaj. Mwen vle gen yon fonksyon aplike bay chak eleman nan etalaj la. Oke, kite la di ke sa m 'vle fè se jis double tout nan eleman yo. Ki sa ki mwen te kapab fè se jis sèvi ak yon riban pou var mwen egal 0, mwen se mwens pase oswa egal a 4, mwen plis, plis, ak Lè sa a, double chak nimewo sèl. Men, mwen kapab tou fè yon bagay tankou sa a. Mwen kapab di nom te ansyen yon sèl, de, twa, kat, senk, kounye a, menm si, mwen ta renmen ou a aplike yon kat sou sa a etalaj kote mwen ta renmen ou a doub chak nimewo. Epi sa a, egzakteman sa k ap pase isit la. Men, remake sa m ap pase nan kòm agiman an nan kat jeyografik. Sa a se yon fonksyon anonim. Apre sa, remake mwen pa te bay fonksyon sa a yon non, Mwen te sèlman bay li yon lis paramèt. Se konsa, sa a se yon egzanp nan yon fonksyon anonim. Nou jeneralman pa ta janm rele sa a fonksyon deyò nan kontèks la nan kat jeyografik. Nou ap defini li kòm yon paramèt nan kat jeyografik, e konsa nou pa fè sa vrèman bezwen gen yon non pou li si nan sèlman bagay ki gen sousi pou se kat jeyografik ak li a defini dwat gen andedan nan kat jeyografik. Se konsa, sa a se yon fonksyon anonim. Nou pa te kapab fè sa deja. Map kèk fonksyon ki aksepte yon sèl paramèt: NUM, ak sa ki fonksyon fè se retounen NUM fwa 2. Se konsa, apre sa a te kat te aplike, sa a se kounye a ki sa nom sanble tankou, de, kat, sis, uit, 10. Epitou, n ap pòp nan men m ' fenèt navigatè ak jis pran yon gade nan sa a vrèman byen vit kòm byen. Se konsa, mwen gen yon lòt bouton isit la nan paj lakay mwen rele doub. Lè m 'klike sou doub, epi li di m 'anvan li te yon sèl, de, twa, kat, senk apre de, kat, sis, uit, 10. Men, si m 'ale retounen lakay yo epi klike sou doub ankò, de, kat, sis, uit, 10. Lè sa a, apre, kat, uit, 12, 16, ak Lè sa a 20. Ak sa ki mwen fè nan fonksyon sa a? Bon, si nou jis pòp nan men IDE, ak Mwen rale moute fonksyon anonim mwen, isit la sou liy sèt a 13, mwen se fè yon ti jan travay anpenpan isit la, men mwen jis enprime soti sa ki nan kounye a nan etalaj la. Lè sa a, sou liy 16, 17, ak 18, gen nan kat jeyografik m 'yo. Sa a se kote mwen aplike sa a double fonksyon nan chak eleman sèl. Lè sa a, yon ti kras pi lwen desann, Mwen jis fè menm bagay la M 'te fè anvan, eksepte kounye a mwen se enprime soti sa ki nan etalaj la apre sa. Men, tout mwen te fè isit la se jis itilize yon fonksyon anonim nan kat jeyografik atravè yon etalaj tout antye. Se konsa, yon sèl plis gwo sijè yo pale sou nan JavaScript se nosyon de yon evènman. Yon evènman se yon bagay ki jis k ap pase lè yon itilizatè reyaji ak entènèt ou an paj, se konsa petèt yo klike yon bagay, oswa petèt se paj la fini loading, oswa petèt yo te demenaje ale rete sourit yo sou yon bagay, oswa yo te tape yon bagay nan yon jaden opinyon. Tout moun nan bagay sa yo se evènman ke yo ki fèt nan paj wèb nou an. Ak JavaScript gen nan kapasite sipòte yon bagay rele yon kap okipe-evènman, ki se yon fonksyon ki kalbak reponn a yon evènman html. Ak sa ki nan yon fonksyon kalbak? Oke, li nan jeneralman jis yon lòt non pou yon fonksyon anonim. Li se yon fonksyon ki reponn a yon evènman. Lè sa a se kote nou vin jwenn nan lide sou obligatwa sèten fonksyon nan yon atribi html patikilye. Pifò eleman html gen sipò pou yon atribi ki nou pa t 'pale sou nan html nan videyo pou yon bagay tankou sou klike sou oswa sou hover oswa sou chaj, tout nan evènman sa yo ke ou ka Lè sa a ekri fonksyon ki kontra avèk evènman sa yo lè evènman sa yo rive nan paj entènèt ou an. Se konsa, petèt ou html sanble yon bagay tankou sa a. Apre sa, mwen gen de bouton isit la, yon bouton ak bouton de, ak isit la mwen gen kounye a defini pa gen anyen, men sa a se kote atribi nan sou klike sou se aparamman yon pati nan tag html mwen. Se konsa, aparamman lè m 'defini sa ki nan ale sou andedan nan ki atribi, li pral yo dwe kèk JavaScript fonksyon ki reponn a evènman an prezimableman nan klike sou bouton youn oswa bouton de. Ki sa ki nan kalite fre sou sa a se nou ka ekri yon kap okipe-evènman jenerik. Lè sa a kap okipe-evènman pral kreye yon objè evènman. Ak objè a evènman pral di nou ki nan de bouton sa yo te klike. Koulye a, ki jan fè sa travay? Oke, li ta ka gade yon bagay tankou sa a. Se konsa, nou pral premye defini bouton nou an gen yon repons a kalbak nan fonksyon ki pral rele lè se bouton an klike, nou pral rele evènman Non alèt yo. Apre sa, remake nan tou de ka nou ap pase nan paramèt evènman sa a. Se konsa, nou rele sa a fonksyon oswa lè sa a fonksyon se deklanche nan yon evènman an ap pase, li pral yo kreye sa a objè evènman epi yo pase li kòm yon paramèt nan alèt non. Epi sa objè evènman se ale nan gen enfòmasyon sou ki te bouton klike. Ak ki jan li fè sa? Oke, li ta ka gade yon bagay tankou sa a. Se konsa, kounye a nan separe m ' JavaScript dosye, mwen ta ka gen jwenn sa a fonksyon non alèt, ki ankò aksepte ke paramèt evènman. Lè sa a, isit la se kote mwen detekte ki bouton te deklanche, var deklanche egal evènman dot sous eleman. Ki sa ki te sous la ki te kreye sa a objè evènman ki te pase nan? Li te bouton youn oswa te li bouton de? Lè sa a, isit la tout m ap fè se enprime soti trigger.innerhtml. Oke, nan ka sa a, nan ka sa kontèks, trigger.innerhtml se jis sa ki ekri sou bouton an. Li jis konsa k ap pase si nou sote tounen pou yon dezyèm fwa, ki ta gen sa ki nan nan ant moun Tags bouton. Li pral bouton youn oswa bouton de. Li kite yo pran yon gade nan ki jan sa a kap okipe-evènman ta gade si nou te gen li kouri nan pratik. Se konsa, premye a tout moun, ou te louvri moute events.js, ki se dosye a JavaScript ki kote Mwen te defini fonksyon sa a. Ak jan ou ka wè, li nan bèl anpil ekzakteman ki sa nou jis te wè sou glise nan yon dezyèm de sa. Apre sa, mwen pral ale sou nan an paj lakay nou ve yo te lè l sèvi avèk. Apre sa, mwen gen isit la bouton yon sèl ak bouton de. Apre sa, mwen pral klike sou youn bouton. Ou klike sou bouton yon sèl, si ou ka wè isit la nan alèt la. OK. Klike sou bouton de, ou klike sou yon bouton de. Se konsa, tou de bouton a gen menm apèl fonksyon, dwa? Yo tou de te alèt Non evènman, men sa a objè evènman ki vin kreye lè nou klike sou li di nou ki bouton te klike. Nou pa t 'gen yo ekri de separe fonksyon oswa kontra avèk gen yo pase nenpòt enfòmasyon adisyonèl. Nou jis ap repoze sou sa JavaScript pral fè pou nou, ki se yo kreye ki sòt de evènman objè sou non nou an. Genyen yon anpil plis nan JavaScript pase sa nou te kouvri nan videyo sa a, men li te gen sa yo fondamantal ta dwe fè ou jwenn byen yon fason lontan yo aprann tout bagay ou pral bezwen konnen sou sa a lang ki enteresan. Mwen se Doug Lloyd. Sa a se CS50.