[Muzika] DOUG Lloyd: Deri me tani ne jemi të vjetër pro në programimin e web, e drejtë? Dhe ne kemi mbuluar disa Gjuhët në video individuale. Dhe tani le të bëjmë një më shumë, JavaScript. Së pari një lajm i mirë, JavaScript është një programimit modern Gjuha e shumë si PHP cilit Sintaksa rrjedh nga C, kështu që është një vend i mirë për të filluar. Është po aq i vjetër sa PHP, po ashtu, ka qenë rreth e rrotull rreth 20 vjet. Ajo u shpik rreth të njëjtën kohë si PHP. Dhe JavaScript është e vërtetë mjaft thelbësore për përvojën e përdoruesit e web. Në fakt, ka tri gjuhë që unë do të thonë lloj të bëjë deri user experience të bashkëveprojmë me faqen e internetit, html, CSS, dhe JavaScript. Dhe kështu që tani le të flasim një pak në lidhje me JavaScript. Lajm i keq, edhe pse, me JavaScript është se ajo vendos një shumë e rregullave për vete, dhe pastaj ai e thyen ato. Dhe JavaScript fakt mund të jetë lloj i vështirë për të mësuar, sepse kjo është ndryshe nga C dhe PHP, të cilat janë të strukturuara shumë dhe kanë rregulla shumë të ngurtë për mënyrën se si gjërat mund të punojnë. JavaScript është lloj i marrë aq fleksibël se ndoshta gjërat nuk janë duke shkuar për punojnë mënyrën se si ne presim nga ata, dhe ndoshta ne me të vërtetë nuk mund të mësojnë gjuha jonë e parë programimi si JavaScript. Kështu që ndoshta për shkak se ajo nuk ka vendosur vetë rregulla, dhe kjo nuk ka të vërtetë zbatuar zakonet e mira coding. Por tani ne kemi zhvilluar me shpresë disa zakone të mira coding, dhe kështu që ne mund të fillojnë të bastisje në JavaScript pak. Për të shkruar JavaScript, të ngjashme me hapjen deri një skedar C me një dot C zgjatje ose një skedar PHP me një shtrirje dot PHP, të gjithë ne duhet të bëni është të hapur një skedë me dot js fotografi extension. Ne nuk duhet të kemi ndonjë të veçantë përndarësit si ne e bëmë në PHP. Kjo lloj e kënd pikëpyetje kllapa PHP që ne jemi duke përdorur për të nga se, mënyra themi shfletuesin tonë se ajo që kemi është JavaScript është duke përfshirë ajo në një tag HTML, dhe ne do të shohim pak rreth si për të bërë këtë në një moment të vetëm. Gjë tjetër që e bën JavaScript ndryshme, megjithatë, është se ajo shkon anën e klientit. Pra, kujtojnë me PHP që ne kurrë nuk mund të vërtetë shoh PHP që nënvizoi një website. Në qoftë se ne ndonjëherë të shikuarat faqe burim, ne do vetëm shih html që ishte të krijuara nga ajo PHP. Por JavaScript shkon anën e klientit. Juaj JavaScript shkon në kompjuterin tuaj. Dhe kjo është arsyeja pse ju mund të bëni Gjëra të tilla si shtoni blockers. E drejtë? Ad bllokimi është bërë zakonisht nga duke vrarë të gjithë JavaScript që po kandidon në një faqe të veçantë. Dhe për shkak se kjo do të duhet të drejtuar në anën tuaj klientit makinë, ju mund të ndalet vetëm JavaScript për drejtimin tërësisht. Kjo gjithashtu do të thotë se kur ju përdorni një faqe interneti që përmban JavaScript, ju duhet të dërgoni burimin JavaScript Kodi si pjesë e përgjigjes suaj http të klientit kur ata e kërkojnë atë. Dhe kështu që ju nuk mund të doni të përdorni JavaScript për të bërë gjëra me të vërtetë të ndjeshme si informacion që kalon rreth përdoruesve fjalëkalimet mbështetur dhe me radhë, sepse ata janë në fakt duke shkuar për të marrë të gjitha të kodit burimor, jo vetëm html që është krijuar, siç do të ishte rasti me themi PHP. Pra, si nuk kemi përfshijnë JavaScript në html tonë për të filluar me? E pra, e ngjashme me CSS, në fakt, është lloj i si të bëjmë atë këtu. Me CSS kemi tags stil. Dhe në brendësi të këtyre tags stil, ne mund të përcaktojë një fletë stil CSS. Në mënyrë të ngjashme me JavaScript mund të hapë tags script, tjetër tag html ne nuk e bëri flasim për në videon tonë HTML, dhe shkruani JavaScript në midis këtyre tags script. Gjithashtu edhe pse, si CSS, ne mund të lidhin në jashtë fotografi CSS dhe tërheqja e tyre në programin tonë në këtë mënyrë. Me CSS ne gjithashtu mund të, më falni, me JavaScript ne gjithashtu mund të specifikojë burimin atribut i tag script për të lidhur në JavaScript veç e veç, kështu që ju nuk e bëni kanë për të shkruar atë në në mes tags script, ne mund të lidhin atë në përdorimin e se tag script si. Dhe ashtu si me rastin me CSS ku kemi rekomanduar se ajo ishte ndoshta në interesin tuaj më të mirë për të shkruar CSS tuaj në një dosje të veçantë në rast ju keni nevojë për të ndryshuar atë, në mënyrë të ngjashme të bëjmë ne rekomandojmë që ju të shkruani tuaj JavaScript në dosje të veçanta dhe të përdorni tags script burim atribuojnë të lidhin tuaj JavaScript në HTML tuaj, faqen tuaj web. Variabla Pra JavaScript, ne do të fillojnë të flasin për sintaksë këtu. Dhe ne do të shkojnë nëpër ky lloj i shpejt, sepse ne kemi bërë këtë në PHP, kështu kjo duhet të gjithë të jetë goxha i njohur. Pra Variablat në JavaScript janë shumë të ngjashme me PHP variablave. Nuk ka asnjë lloj Specifier, dhe kur ju futur një ndryshore, ju prefiksit atë me fjalen var. Në PHP do të bëjë diçka si kjo, shenjë dollar x. Kjo është se si ne e treguar një variabël, por jo, ne nuk e përmend llojin e variablit në të gjitha. Ne do të themi diçka si dollar shenjë x është e barabartë me 44 në PHP. Në qoftë se ne ishim duke bërë të e njëjta gjë në JavaScript, ne do të themi var x është e barabartë me 44. Pra var është lloj i mënyrës tonë të futur një ndryshore. Kjo është ndoshta pak më shumë intuitiv se vetëm variabël dollarit shenjave. Përsëri, pasi nuk ka asnjë tipet e te dhenave, ne mund të bëjmë këtë me çdo lloj të dhënave, vargjet, çdo gjë tjetër do të jenë të gjitha var. Conditionals, të gjithë e tona miq të vjetër nga C dhe PHP janë ende në dispozicion, kështu që ne kemi në qoftë se, tjetër në qoftë se, tjetër, kaloni dhe pyetje zorrës së trashë shenjë. Kaloni mbetur aq fleksibël sa të ishte në PHP, por të gjitha këto që ju jeni njohur me nga tani. Dhe në mënyrë të ngjashme me sythe janë preferuarat e vjetra të kohë, të bëjë kohë, dhe për ende në dispozicion për ne. Pra, tashmë ne e dimë se një shumë e themelore lloj JavaScript e bazave vetëm në bazë të paturit mjaft e njohurive tani rreth C dhe PHP. Po në lidhje me funksionet në JavaScript? E pra, e ngjashme me PHP çdo funksion është prezantua me fjalen funksion. Ju thoni funksion, dhe pastaj ju të fillojnë për të përcaktuar funksionin tuaj. Çfarë është pak më ndryshe për JavaScript, edhe pse është aftësia që të ketë atë që quhet një funksion anonim. Kështu që ju mund të përcaktojë funksionet që nuk kanë një emër. Kjo është diçka që ne me të vërtetë nuk kanë parë më parë. Ne do të me të vërtetë përdorin konceptin i një funksion anonim pak më vonë në këtë Video, sepse ajo do të të bëjë një pak më shumë kuptim në kontekstin e kur ne e shohim atë në një situatë të veçantë që unë kam hartuar këtu. Por le të vetëm të marrin një vështrim në atë një JavaScript të thjeshtë Funksioni mund të duket si. Kështu që unë kam shkuar përpara dhe hapi IDE tim CS50 dhe unë tashmë kam drejtuar Apache për të filluar serverin tim running. Dhe unë kam këtë fotografi të hapur i quajtur Home.html. Dhe unë do të zoom në pak këtu. Dhe në thelb, ju mund të shihni Home.html është vetëm një bandë e butonave. Dhe unë jam duke pretenduar në krye këtu se ky është seksion JavaScript materiale. Pra, ka një bandë e butonave këtu, por çfarë këto butona të bëjë në fakt? E pra, ne do të shkojnë mbi të IED tim, dhe unë Home.html kam hapur këtu. Në fillim, këtu është ku unë jam i lidhur në të gjitha e mia JavaScript burim fotografi. E drejtë? Pra, unë kam anonymous.js, clock.js, Unë jam duke përdorur atribut burim i tag script për të lidhur në dosjen. Kështu që unë nuk kam shkruar asnjë JavaScript direkt në këtë dosje, por unë kam tërhequr në të gjitha JavaScript Unë kam shkruar veç e veç. Dhe në qoftë se ne lëvizni poshtë këtu, kjo duhet të gjithë e shohin disi i njohur me pak e sintaksës së re. Ne kemi këtu header tag për funksionet dhe pastaj një buton. Unë kam një kontribut që është një buton lloj, dhe me sa duket kur unë click it, Unë jam duke shkuar për të thirrur disa funksionojë datën vigjilent. Dhe kjo është se si ne mund të lloj përzierje deri pak e JavaScript dhe HTML. Ata në të vërtetë luajnë mjaft mirë së bashku, dhe kështu me sa duket kur Unë klikoni në këtë buton, unë jam duke shkuar për të thirrur një datë funksion vigjilent. Dhe në mënyrë të ngjashme kam përcaktuar sjelljet për të gjithë butonat e tjera që janë në atë faqe home.html, të cilat ne do të vazhdojmë të kthehej të gjatë të kësaj video. Por le të kthehemi deri këtu dhe të marrë një sy në clock.js, i cili është JavaScript skedar që unë shkroi se e ka këtë funksion parë ne jemi duke shkuar për të marrë një vështrim në. Siç mund ta shikoni, unë po filloj time JavaScript funksionojë me funksionin fjalen, dhe unë kam dhënë kjo një emri, ajo që quhet data vigjilent. Brenda atje, unë duket të krijojë një variabël i ri lokal quhet data e tanishme. Dhe unë jam duke shkuar për të caktuar një e barabartë me një datë të re. Dhe ne mund të merrni në një shumë të detaje si për atë një datë është, dhe me të vërtetë JavaScript është aq i madh që ne nuk mund të mbuluar çdo gjë në një video. Por mjafton të thuhet, kjo do për t'u kthyer tek unë një artikull të dhënave që encapsulates datën dhe kohën e tanishme. Unë jam ruajtjen atë në një variabël që unë jam me sa duket duke shkuar për të njoftuar datën aktuale. E pra, çfarë bën alarm aktuale date duken si? Le të marrin një vështrim në dosjen e vetë mbështetur mbi në dritaren e shfletuesit. Pra, përsëri, kjo është butonin që unë kanë lidhur me, këtë funksion quajtur. Dhe unë click it atje dhe shikoni se çfarë ajo e bëri, ajo alarmuar. Ajo popped up këtë lloj të kutisë thënë mua se koha e tanishme është, me sa duket është 4 nëntor në 10:43:43 në mëngjes. Dhe në qoftë se unë klikoni atë përsëri, tani kjo është disa sekonda më vonë, e drejtë? Pra, kjo është e gjitha kjo funksion ka. Kur unë klikoni këtë buton, atë pops up një mesazh alarm për mua. Kështu që nuk është e vërtetë shumë për funksionet kjo është ndryshe nga PHP, vetëm pak e sintaksës së re që vjen me punuar me JavaScript. Vargjeve në JavaScript janë shumë i thjeshtë. Të deklarojë një rrjet, ju përdorni kllapa katrore sintaksë se ne jemi të njohur me nga PHP. Dhe të ngjashme me PHP, ne gjithashtu mund të përzierje lloje të të dhënave. Pra ky grup, të dyja i këtyre vargjeve do të jetë krejtësisht legjitime JavaScript. Një që është e të gjitha integers, dhe një që përzier lloje të ndryshme të të dhënave. Çfarë është diçka shumë e ndryshme në JavaScript, edhe pse? Kjo është nocioni i një objekti. Pra, ndoshta ju keni dëgjuar për kundërshtojnë programimin e orientuar. Ne nuk e bëjmë një shumë prej tij në CS50, por ne do të bëjmë një grimë të vogël e saj këtu në kontekstin e JavaScript. Tani JavaScript ka aftësinë për sillet si një programimin e orientuar nga objekti gjuhë, por kjo nuk është në vetvete ekskluzivisht të orientuar një objekt gjuhë programimi. Dhe kjo përsëri vjen përsëri se pse thashë, mund të jetë shumë e vështirë për të mësuar JavaScript si programimin tuaj të parë gjuha, sepse ajo nuk me të vërtetë përshtaten një paradigmë të veçantë. C, nga ana tjetër është një gjuhë programimi funksionale. Në qoftë se ne duam të, funksionet janë lloj i njeriut Big Boss, e drejtë? Ata diktojnë çfarë ndodh çdo gjë tjetër. Ne duam të ndryshojmë variablave, ne e quajmë funksione. Ne bëjmë gjëra për funksionet. Objektet në vend të kësaj, në një kundërshtojnë gjuhën e orientuar, objektet lloj të bëhet yll dhe Funksionet e bërë një lloj të mesëm. Por ajo që është një objekt, çfarë është ky nocion e një objekti? E pra, në qoftë se ajo ndihmon, mendoj për atë në llojin e parë i si një strukturë C ose një struct që ne kemi mësuar për para. Në C, një strukturë përmban një numër të fushave, dhe ndoshta ne tani mund të fillojnë të quajmë këto prona fushat. Por pronat kurrë me të vërtetë të qëndrojë më vete, apo jo? Nëse unë të përcaktojë një strukturë për një makinë si kjo me pas dy fields ose pronat, një një numër i plotë për vitin e makinave dhe një tjetër një karakter 10 string për modelin e makinës, Unë mund të them diçka si kjo, Unë mund të deklarojë një ndryshore të re të tipit makinave struct Herbie. Dhe atëherë unë mund të them diçka si herbie.year barabartë 1,963, dhe herbie.model barabartë Beetle. Eshte ne rregull. Unë jam duke përdorur fushat në Konteksti i strukturës, por unë kurrë nuk mund vetëm thonë diçka si kjo. E drejtë? Unë nuk mund të përdorë emrin terren pavarur nga strukturës. Kjo është lloj i një gjë themelore. Pra fusha të qenit themelore për strukturat C janë shumë të ngjashme me pronat e qenit themelore për objektet JavaScript. Por, ajo që i bën ato veçanërisht interesante është se objektet mund të ketë çfarë quhen metoda, të cilat janë me të vërtetë vetëm një fjalë dashuroj për funksionet që janë të pandara në objekt si. Pra, kjo është një funksion që mund të jetë vetëm quajtur në kontekstin e një objekti. Vetëm një objekt që ka përcaktuar ky funksion brenda saj, në qoftë se ju mendoni për një struct, funksioni është përcaktuar brenda ato definimin formatimin e teksteve kaçurrel të strukturës. Pra, kjo vetëm do të thotë diçka me strukturën. Dhe kjo është lloj i asaj që ne jemi duke bërë këtu me objekte dhe metodat. Kjo është në thelb si ne jemi përcaktimin e një funksion që vetëm ka kuptim në një objekt të veçantë, dhe kështu që ne thërrasë se një metodë e objektit. Dhe ne kurrë nuk mund të telefononi atë funksion i pavarur e objektit, ashtu si ne nuk mund të themi vit apo model pavarur nga struct në C. Pra programimit funksional paradigma duket diçka si kjo. Funksioni dhe pastaj kur ju të kalojë në objekt si një parametër. Në një programimin e orientuar nga objekti gjuhë, ky lloj i merr kthyer, dhe ne do të mendojmë për ajo pëlqen kjo, object.function. Pra, kjo lloj që dot Operatori përsëri duke nënkuptuar se kjo është një lloj i pronës ose atribut i objektit vetë. Por kjo është ajo që një objekt orientuar gjuhë programimi mund të bëni për të bërë një funksion telefononi në një metodë, përsëri, e cila është vetëm një fjalë të veçantë për një funksion që është e natyrshme për një objekt. Kjo është ajo që Sintaksa mund të duket si. Dhe kështu që ne do të fillojmë të shohim disa prej kjo në kontekstin e JavaScript. Ju gjithashtu mund të mendoni për një objekt lloj si një grup asociative, të cilat ne jemi të njohur me nga PHP. Mos harroni një grup shoqerues lejon ne të kemi çifte kyçe me vlerë, në vend të paturit e indekseve 0, një, dy, tre, dhe kështu me radhë si ne jemi përdorur për të nga C vargjeve. Vargjeve asociative mund të hartë fjalë, si në PHP video, ne ishim duke folur për toppings e pizzas. Dhe kështu që ne kishim një grup quajtur pizzas, dhe ne kishte djathi ishte një kyç dhe 8,99 $ ishte vlera, dhe pastaj spec djegës ishte kyç, 9,99 $ ishte një vlerë, dhe kështu me radhë. Dhe kështu që ne mund të mendojmë për një kundërshtojnë lloj i ngjashëm me një associative array. Dhe kështu kjo sintaksë këtu do të krijonte një objekt të ri quajtur Herbie me dy pronat brendësi të saj. Vit, e cila është caktuar vlera 1963, dhe model, e cila është caktuar string Beetle. Dhe vini re këtu se unë jam duke përdorur Kuotat e vetme në JavaScript. Ju mund të përdorni kuotat e vetme apo të dyfishtë kur ju jeni duke folur në lidhje me vargjet. Është vetëm konvencionale rasti që herë më kur ju jeni me shkrim JavaScript, ju vetëm përdorni kuotat e vetme. Por unë mund të përdorni kuotat e dyfishtë këtu, dhe që do të jetë e përkryer gjobë, si dhe. Pra, mbani mend se si në PHP kemi pasur këtë nocion e një për çdo lak që do të na lejojë për të iterate mbi të gjitha të vlerës kyçe palë një associative grup, sepse ne nuk e kanë këtë aftësi të iterate me 0, një, dy, tre, kater, dhe kështu me radhë? JavaScript është diçka shumë të ngjashme, por kjo nuk është quajtur një për çdo lak, është quajtur një për në sythe. Pra, nëse unë i thashë mua si kjo, për çelës var në objekt, kjo është lloj i ngjashëm me thënë për çdo gjë si diçka. Por të gjitha unë jam duke bërë këtu është iterating nëpër të gjitha çelësat e objektit tim. Dhe në brendësi të kaçurrel formatimin e teksteve atje, unë do të përdorni objekt kllapave kyç për t'iu referuar vlerës në atë vend kyç. Përndryshe, nuk ka madje edhe një mënyrë tjetër. Në qoftë se unë vetëm kujdesen vetëm për Vlerat, unë mund të them për çelësin e objektit, dhe vetëm përdorni kyç brenda. Pra, për çelës var në objekt, unë kam për të përdorur e objektit kllapa katrore kyç brenda lak. Për var çelësin e objektit, unë mund të vetëm përdorni kyç brenda lak, sepse unë jam vetëm në mënyrë specifike duke folur për vlerat atje. Pra, le të marrin një ndoshta shikoni në ndryshim vetëm për të ju tregojnë shpejt dallimi në mes të katër në dhe për të me një shumë të veçantë grup, të cilat ne kemi këtu, javë array. Kështu që unë kam për të gjetur një koleksion të ri që kam mbushur me shtatë tela, Hënë, e martë, e mërkurë, Enjte, e premte, e shtunë, e diel. Dhe unë dua të tani iterate nëpër këtë grup, shtypjen nga informata të caktuara. Nëse unë përdorni një për në lak të shtypura nga informatat, çfarë mendoni se unë jam duke shkuar për të marrë? E pra, le të marrin një sy. Dhe para se të hidhen mbi në dritaren time shfletuesit, vetëm e di se console.log është lloj i një mënyrë për të bërë një F shtypura në JavaScript. Por ajo që është konsol? E pra, kjo është ajo që ne jemi duke shkuar për të shkuar të marrë një vështrim në të drejtë tani. OK, kështu që ne jemi përsëri këtu në dritaren time shfletuesit, dhe unë jam duke shkuar për të hapur up mjetet e mia zhvilluesi. Përsëri, unë jam vetëm duke goditur F12 për të hapur mjetet zhvilluesi i saj. Dhe vini re se këtu në Top Unë e kam zgjedhur tastierë. Pra, kjo është nocioni e një zhvilluesi tastierë, dhe kjo do të na lejojë që të shtypura informacion jashtë, lloj si terminalit, por si ju do të shihni një pak më vonë, ne gjithashtu mund të shkruani informacionin në për të bashkëvepruar me faqen tonë të internetit. Unë jam duke shkuar për të zoom në pak këtu, dhe unë jam gonna tani klikoni mbi në provë. Dhe katër në test-- unë nuk jam gonna të ju tregojnë kodin për atë të drejtë tani, por ju do të merrni atë në qoftë se ju shkarko kodin burim që është e lidhur me këtë video-- është vetëm se për në lak që pamë vetëm një i dyti më parë në rrëshqitje. Kështu që unë jam gonna të klikoni që button, dhe gjatë këtu, këtu është ajo që e ka shtypur jashtë në konsol, 0, një, dy, tre, katër, pesë, gjashtë. Unë nuk e shtypura nga të dhënat brenda këtyre vende array, sepse kam përdorur një në lak. Dhe në brendësi të trupit të lak, I shtypura vetëm jashtë çelës nuk kundërshtojnë kyç. Por në qoftë se unë tani të qartë tim tastierë, dhe unë kaloni në për të testit, dhe katër të testit Unë them ta përdor për të lak në vend dhe të shtypura jashtë kyç, në qoftë se unë të klikoni atë, tani unë jam marrë më të Elementet aktuale brenda e objektit tim ose grup im në këtë rast. Grup im i ditëve të javës. I shtypur jashtë hënë, Martë, e mërkurë. Pra, kjo është diferenca midis një në lak, e cila shtyp nga vetëm çelësat në qoftë se ju vetëm përdorni butonin e në brendësi të trupit të lak, dhe një për të lak, e cila shtyp nga vlerat në qoftë se ju përdorni vetëm çelësi brenda trupit të lak. Të gjithë të drejtë, si nuk kemi tani të fillojë të lidh vargje dhe ndoshta përzierje deri disa variabla me interpolation si ne kemi qenë në gjendje të bëjë në PHP? E pra, ne jemi mjaft të njohur me këtë nga PHP. Kjo është se si ne do të bëjmë atë duke përdorur dot operator të lidh vargjet. Në JavaScript, edhe pse, ne fakt përdorin diçka quhet operatori plus, e cila është ndoshta edhe pak më shumë intuitive, e drejtë? Ne jemi duke shtuar një bandë e vargjet bashku. Pra, le kokën mbrapa mbi dhe shikoni se çfarë ky do të shtypura në qoftë se ne jemi duke u përpjekur për të shtypur jashtë të gjithë informacionin në javë rrjet. Të gjithë të drejtë, kështu që nën këtu nën string varg, Kam dy opsione, ndërtesë string V1 dhe pastaj ndërtimin e string V2. Dhe ne do të shohim se pse ne duhet V2 në një të dytë. Por unë jam gonna të klikoni në Ndërtesa V1 string, e cila është kodi ishim vetëm duke marrë një vështrim në, console.log me të gjitha pluses. Le të shohim nëse ky shtyp se çfarë ne presim. E hëna është dita e numrit 01 të javës, Marta është numri dita e 11 e javës. E pra, çfarë isha duke u përpjekur për të bërë nuk ishte marrë ajo të shtypura nga e hënë është numri ditë një, e martë është dita numri dy. Por kjo duket si unë jam gjithmonë shtypjen nga një të tillë. E pra, pse është kjo? E pra, ajo rezulton, të marrë një sy në këtë copë të vogël të kodit këtu. Vini re se ne jemi duke përdorur plus operator në dy kontekste të ndryshme. Dhe kështu që këtu është ku ndoshta gjërat se ne kemi qenë lloj i thënë: oh, kjo është aq e madhe. Ne nuk merremi me lloje të të dhënave më. Por këtu është ajo ku fakti se kemi humbur lloje të të dhënave në fakt mund të jetë pak një problem për ne. Tani që operatori plus është përdorur për të lidh vargje dhe shtoni numra së bashku, JavaScript ka për të bërë mend tij më të mirë si për atë që unë dua që ajo të bëjë për mua. Dhe në këtë rast, ajo mendoi gabuar. Ajo ditë sapo concatenated, e cila do të jetë 0, një, dy, tre, kater, pese ose gjashte, dhe pastaj ajo vetëm concatenated se dhe pastaj concatenated një. Kjo në fakt nuk shtoni ato së bashku. Dhe kështu këto gjuhë, PHP dhe JavaScript, se nxjerrje larg ky nocion i llojeve, ju nuk duhet të merren me atë më. Ata ende nuk kanë lloje nën kapuç. Dhe ne mund të, në situata të si ky, levave për këtë fakt duke thënë diçka si ndoshta kjo, e cila është thënë JavaScript, nga mënyrë, trajtojnë këtë si një numër i plotë, nuk e trajtojnë atë si një varg, madje edhe pse ne jemi duke përzier së bashku strings dhe integers këtu. Kjo është vetëm një nga ato gjëra që duket aq e madhe në kontekstin e që ne nuk duhet të merret me llojet më, por ndonjëherë ju do të drejtuar në një situatë tamam si ky, ku fakti se ju nuk keni kontroll mbi llojet mund të dështojnë për ju në qoftë se ju nuk jeni të kujdesshëm. Dhe kështu që në qoftë se ne të hapet përsëri mbi të IDE, unë jam duke shkuar për të pastruar nga tim konsol përsëri, dhe unë jam duke shkuar për të klikoni varg Ndërtesa version dy, e cila është vendi ku unë përdorin këtë funksion Parse int. Tani ajo është shtypje nga informatat që unë jam duke pritur. Hënës numër një ditë, e martë është dita numri dy, dhe kështu me radhë. Pra, le të flasim për funksionet përsëri. I premtoi ne do të flasim për anonim funksionet dhe tani konteksti për këtë ka ardhur në fund. Pra, para se të bëjmë këtë, le të flasim përsëri rreth vargjeve për vetëm një të dytë. Pra vargjeve janë të veçantë Rasti i një objekti. Në fakt, çdo gjë në JavaScript është në fakt një objekt. Pra, funksionet janë një rast i veçantë i një objekti, integers janë një të veçantë Rasti i një objekti, por vargjeve specifike kanë një numër të metodave. Mbani mend, sepse ata janë objekte, ata mund të kenë pronat dhe metodat. Ata kanë një numër të metodave që mund të aplikohet në ato objekte. Ka një metodë të quajtur madhësia, array.size, i cili do të kthehet në ju si ju mund të presin numri i elementeve në grup tuaj. array.pop, lloj si nocioni ynë i popping jashtë e një pirg, në qoftë se ju kujtohet nga oxhaqet video tonë, heq elementin e fundit nga array. array.push shton një element të ri në fund të një grup. array.shift është lloj i si DQ, ajo splices jashtë elementi i parë i një grup. Por ka edhe një tjetër të veçantë Metoda e një grup të quajtur hartë. Dhe kjo është lloj i një koncept interesant. Pra, çfarë është ideja e një hartë? Ju në fakt do të shihni këtë në disa gjuhë të tjera, dhe ne nuk jemi duke folur për një lloj hartografët hartë këtu, ne jemi duke folur për një funksion të hartës. Në kontekstin ne jemi duke folur për këtu, një hartë është një operacion që ne të veçantë mund të kryejnë në një sërë për të aplikuar një funksion të veçantë në çdo element të kësaj grup. dhe kështu që ne do të thonë në ky rast, ndoshta array.map, dhe në brendësi të saj, ne jemi duke kaluar në hartë është një funksion që duam për t'u aplikuar në çdo element të vetme. Pra, kjo është lloj i ngjashëm me përdorimin e një lak për të iterate mbi çdo element dhe të aplikojnë një të veçantë funksionojë për çdo element, sapo JavaScript e ka ndërtuar në këtë Nocioni i një hartë që mund të zbatohet. Dhe kjo është një kontekst i madh për flasin për një funksion anonim. Pra, le të thonë se ne kemi ky grup i integers. Ajo që quhet Nums, dhe atë e mori pesë gjëra në të, një, dy, tre, katër, pesë. Tani unë dua të ndajë disa funksion në këtë grup. Unë dua që të ketë një funksion të aplikoni në çdo element të vektorit. E pra, le të themi se ajo që unë dua të bëni është vetëm të dyfishtë të gjitha elementet. Ajo që unë mund të bëj është vetëm përdorni një lak për var I është e barabartë me 0, I është më pak se ose e barabartë me 4, I plus, plus, dhe pastaj dyfishohet çdo numër të vetëm. Por unë mund të bëj diçka si kjo. Unë mund të them Nums ishte më parë një dy tre Katër Pesë, tani, edhe pse, unë do të doja që ju të aplikoni një hartë mbi këtë grup ku unë do të doja t'ju për të dyfishuar çdo numër. Dhe kjo është pikërisht çfarë po ndodh këtu. Por vini re atë që unë jam duke kaluar në si argumenti në hartë. Ky është një funksion anonim. Dhe vini re unë nuk kam dhënë ky funksion një emër, Unë e kam dhënë vetëm atë një listë parametër. Dhe kështu që ky është një shembull i një funksion anonim. Ne në përgjithësi nuk do të thërrasë këtë Funksioni jashtë kontekstit të hartës. Ne jemi duke e përkufizuar atë si një parametër në hartë, dhe kështu ne nuk të vërtetë duhet të ketë një emër për atë nëse vetmja gjë që kujdeset për është harta dhe kjo është e përcaktuar të drejtë aty brenda hartë. Dhe kështu kjo është një funksion anonim. Ne nuk kemi qenë në gjendje për të bërë këtë më parë. Harta disa funksion që pranon një parametër, num, dhe se çfarë funksioni ka po kthehet Num herë 2. Dhe kështu pas kësaj mapping është zbatuar, kjo është ajo që tani duket Nums si, dy, katër, gjashtë, tetë, 10. Dhe ne do të pop mbi të tim dritare të shfletuesit dhe vetëm hidhini një sy në këtë shumë shpejt si. Kështu që unë kam një buton këtu në faqen time në shtëpi të quajtur dyfishtë. Dhe kur unë klikoni dy herë, dhe kjo tregon mua para se të ishte një, dy, tre, katër, pesë pas dy, katër, gjashtë, tetë, 10. Dhe në qoftë se unë kthehem dhe klikoni dyfishtë përsëri, dy, katër, gjashtë, tetë, 10. Dhe pastaj pas, katër, tetë, 12, 16, dhe pastaj 20. Dhe çfarë jam duke bërë në këtë funksion? E pra, në qoftë se ne vetëm pop mbi të IDE, dhe Unë tërheq lart funksionin tim anonim, këtu në përputhje shtatë përmes 13, unë jam duke bërë një punë pak dashuroj këtu, por unë jam vetëm shtypje nga çfarë është aktualisht në grup. Pastaj në linjë 16, 17, dhe 18, nuk ka hartë ime. Kjo është ajo ku unë jam duke aplikuar këtë dyfishim Funksioni për çdo element të vetëm. Dhe pastaj pak më poshtë, Unë jam vetëm duke bërë të njëjtën gjë Unë kam qenë bërë përpara, me përjashtim tani unë jam i shtypjen nga përmbajtjen e array më pas. Por të gjitha unë kam bërë këtu është vetëm përdorni një funksion anonim të ndajë nëpër një rrjet të tërë. Pra, një shumë temë e madhe për të folur rreth në JavaScript është nocioni i një ngjarjeje. Një ngjarje është diçka që ndodh vetëm kur një përdorues ndërvepron me web tuaj faqe, kështu që ndoshta ata të klikoni diçka, apo ndoshta faqe është përfunduar ngarkimit, apo ndoshta ata kanë lëvizur miun e tyre mbi diçka, ose ata kanë shtypur diçka në një fushë të dhëna. Të gjitha këto gjëra janë ngjarje që po ndodhin në faqen tonë të internetit. Dhe JavaScript ka të Aftësia për të mbështetur diçka quajtur një mbajtës ngjarje, e cila është një funksion callback që i përgjigjet një ngjarje HTML. Dhe çfarë është një funksion callback? E pra, kjo është zakonisht vetëm një tjetër të përmendur për një funksion anonim. Kjo është një funksion që përgjigjet në një ngjarje. Dhe kjo është ajo ku kemi ardhur në Ideja e detyrueshme funksione të caktuara me një atribut të veçantë HTML. Shumica e elementeve kanë html mbështetje për një atribut se ne nuk flasim për në html Video për diçka si në klik ose më rri në pritje ose në ngarkesë, të gjitha këto ngjarje që ju pastaj mund të shkruani funksionet që kanë të bëjnë me ato ngjarje kur këto ngjarje ndodhin në faqen tuaj web. Dhe kështu ndoshta html tuaj duket diçka si kjo. Dhe unë kam dy butona këtu, një buton dhe buton dy, dhe këtu unë kam aktualisht asgjë të përcaktuara, por ky është vendi ku atribut në click është me sa duket një pjesë e tag tim HTML. Pra, me sa duket, kur unë të përcaktojë se çfarë është ndodh brenda këtë atribut, ajo do të jetë një JavaScript funksion që i përgjigjet ngjarjes me sa duket i klikuar në buton një ose dy buton. Çfarë është lloj i ftohtë në lidhje me këtë është se ne mund të shkruani një mbajtës gjenerike ngjarje. Dhe kjo ngjarje do Handler të krijojë një objekt ngjarje. Dhe objekti ngjarja do të na tregojë cili prej dy butonave është klikuar. Tani se si e bën këtë punë? E pra, kjo mund të duket diçka si kjo. Pra, ne së pari do të përcaktojë butonat tona të ketë një përgjigje për callback funksion që do të quhet kur klikohet butoni, ne do të thërrasë ngjarje emrin vigjilent. Dhe vini re në të dyja rastet ne jeni të duke kaluar në këtë parametër ngjarje. Pra, ne e quajmë këtë funksion ose kur ky funksion është shkaktuar nga ngjarje ndodh, ajo do të krijojë këtë objekt ngjarje dhe të kalojë atë si një parametër për të njoftuar emrin. Dhe kjo ngjarje është objekt do të përmbajnë informacion për të cilin buton është klikuar. Dhe si e bën atë të bëjë këtë? E pra, kjo mund të duket diçka si kjo. Deri tani në veçantë mia JavaScript file, unë mund duhet të gjejnë këtë Funksioni Emri vigjilent, i cili përsëri e pranon këtë parametër ngjarje. Dhe pastaj këtu është vendi ku unë jam zbulimin i cili buton u shkaktua, shkas var barabartë ngjarje dot element burim. Cili ishte burimi që ka krijuar ky objekt ngjarje që u miratua në? Ishte kjo një buton apo ishte butonin dy? Dhe pastaj këtu të gjitha unë jam duke bërë është shtypjen nga trigger.innerhtml. E pra, në këtë rast, në këtë Konteksti, trigger.innerhtml është vetëm ajo që është shkruar në butonin. Kjo ndodh pikërisht kështu në qoftë se ne të kërcejnë përsëri për një të dytë, që do të të jetë ajo që është në mes të këtyre tags button. Ajo do të jetë një buton ose butonin dy. Dhe le të marrin një vështrim në si kjo mbajtës ngjarje do shikoni nëse do të kishim të konkurrojnë në praktikë. Pra, para së gjithash, ju keni hapur events.js, që është skedari JavaScript ku Unë kam përkufizuar këtë funksion. Dhe si ju mund të shihni, është shumë e shumë pikërisht ajo ne vetëm e pa në rrëshqitje një të dytë më parë. Dhe unë do të shkoj për të home page ne kemi qenë duke përdorur. Dhe unë kam këtu buton një buton dhe dy. Dhe unë do të klikoni mbi një buton. Ju klikuar në butonin e parë, në qoftë se ju mund të shihni të drejtë këtu në gatishmëri. NE RREGULL. Kliko në butonin dy, ju klikuar në një buton dy. Pra, të dy butonat kanë njëjta thirrje funksion, e drejtë? Ata të dy ishin Emri vigjilent ngjarje, por ky objekt ngjarje që merr krijoi kur ne të klikoni mbi ajo na tregon cili buton është klikuar. Ne nuk kemi për të shkruar dy veçantë funksione ose të veprojë me të paturit për të kaluar çdo informacion shtesë. Ne jemi vetëm duke u mbështetur në çfarë JavaScript do të të bëjë për ne, e cila është për të krijuar që lloj i objektit ngjarje në emër tonë. Ka shumë më tepër për JavaScript se atë që ne kemi mbuluar në këtë video, por që këto themelor duhet të merrni ju mjaft rrugë të gjatë për të mësuar gjithçka që ju do të duhet të dini në lidhje me këtë Gjuha e interesante. Unë jam Doug Lloyd. Kjo është CS50.