[MUSIC Playing] Gjuha 1: E pra, ja ku jemi, Seria e fundit P në CS50. Përgëzoj veten nga detyrimi ardhur deri më tani që prej përshëndetje juaj e parë botëve dhe shtypjes nga piramidat për Mario. Ju bërë një faqe interneti javën e kaluar. Dhe ne jemi duke shkuar për të bërë një tjetër këtë javë, e që ju lejon për të përzënë rreth kampus Harvardit, picking Anëtarët e stafit up CS50, dhe sjelljen e tyre përsëri në e tyre shtëpi banimi. Tani javën e kaluar kemi punuar në PHP, një server side gjuhë. Për këtë grup P, ne jemi duke u prezantuar në JavaScript, që është një klienti Gjuha anë. Pra, le të marrin një vështrim në disa nga Kodi shpërndarjes që është dhënë për të ju për këtë grup P. Në dosje JavaScript, nuk do të të jetë një bandë e dosjeve JavaScript. Ka buildings.js, e cila përmban një grup i ndërtesave rreth Harvard kampus, me informacionin e tyre dhe pozita. Houses.js është një koleksion i Harvardit shtëpi banimi, me tyre latitudes dhe longitudes. Passengers.js përmban një grup i udhëtarëve - anëtarët e stafit CS50 - që ju do të sjellë përsëri në shtëpitë e tyre të banimit. Math3D.js, që përmban shumë funksionet për të bërë me lëvizjen. Nëse ju jeni matematikisht me mendje, atëherë unë ju mirëpresim të marrë një sy. Por ju nuk keni nevojë për të kuptuar çdo gjë në atje. Shuttle.js, që merret me Lëvizja e anijes së. Dhe index.html është faqja ku çdo gjë ndodh, me të vërtetë, ku përdorues është bashkëveprojmë me këtë faqe interneti. Service.css është fletë stil CSS, e cila, përveç Twitter Biblioteka bootstrap, kontrollet se si index.html duket. Dhe atëherë ne gjithashtu kemi service.js, të cilat përmban funksionet e shërbimit për anijes. Dhe këtu është ku ju jeni do të jetë plotësuar disa nga të DOS-it. Tani le të marrin një vështrim në objekte dhe vargjeve asociative në JavaScript, e cila për të gjitha qëllimet dhe synimet janë të këmbyeshëm. Në qoftë se kam kërkuar për të bërë një objekt një ndryshore quajtur një shkop magjik, unë do të deklarojnë atë. Dhe brenda këtyre formatimin e teksteve kaçurrel unë do të specifikoni kryesor është njëbrirësh. Druri është qershi. Dhe gjatësia e tij është 13. Tani unë mund të hyni në vlerat e objekteve duke përdorur simbol shoqerues array. Pra shkop magjik Indeksi core, unë mund të vënë që barabartë tek unicorn, ose kontrolloni se, nëse më duhet. Ose unë mund të përdorni dot operatorin. Wand dot druri është e barabartë me qershi, dhe kështu me radhë, e kështu me radhë. Kështu që ju shihni se vargjeve asociative dhe objekte në JavaScript do të jetë këmbyeshëm, dhe vullneti vijnë në mjaft i dobishëm. Pastaj ne shohim një grup të ndërtesave në buildings.js. Përsëri, një koleksion të objekteve. Në qoftë se kam kërkuar për të bërë një rrjet të mirë ndërtesave në kampus Harvard, pastaj Unë do të bëjë atë si më poshtë. Duke përdorur këtë simbol objekt, ku I ruajtur rrënjë, emrin, adresën, gjerësi, gjatësi dhe për çdo objekt të vetëm ndërtimin. Le të shpejt të flasim për variablat në JavaScript. Ashtu si PHP, variablat JavaScript janë të shtypur dobët ose lirshëm. Për të krijuar një ndryshore lokale, ju prefiksit Emri i ndryshueshëm me V-A-R, var. Tani në JavaScript, funksionet do kufizojnë fushëveprimin e variablave. Pra, nëse ju keni një variabël lokale brenda një funksion, atëherë funksionet e tjera nuk mund të përdorni atë. Por ndryshe nga C, sythe dhe kushtet nuk kufizojnë qëllimin e një variable. Pra, edhe në qoftë se ju të deklarojë atë në brendësi të një kusht, i gjithë funksioni do të kenë qasje në të. Tani pa var, e ndryshueshme do të jetë globale. Pra, nëse ju vetëm të shpallin emrin dhe të caktojë një vlerë, atëherë kjo e ndryshueshme do të jetë një ndryshore globale në JavaScript. Tani në shtëpi, ne kemi një shoqerues koleksion të objekteve të tipit shtëpi, ku çdo shtëpi është vetëm një gjerësi dhe një gjatësi. Pastaj ne kemi pasagjerët array, e cila është një koleksion të tipit objekt pasagjerëve. Kështu që çdo pasagjer ka një emër përdoruesi, një emër, dhe një shtëpi. Vini re se unë jam duke parë i tipit pasagjerëve, i cili me të vërtetë vetëm do të thotë se çdo objekt ka njëjtën vlerë çift kyç. Pra, çdo objekt i tipit pasagjerit ka një emër përdoruesi, një emër dhe një shtëpi. Pra, çfarë nuk kemi nevojë të të bëjë për të vendosur P? E pra, ne kemi nevojë për të lejuar përdoruesit të marr up anëtarë të stafit, për të shfaqur të gjithë anëtarët e stafit që janë aktualisht në anijes tonë, dhe për rënie të tyre. Dhe pastaj ne do të flasim për ekstra karakteristika që mund të zbatohen për anijes vendosur P. Por të flasim për marrje të parë. Fytyrat e stafit CS50 kanë qenë mbillen në të gjithë kampus, ku çdo Fytyra është zbatuar si një shenjë vend në 3D tokë, dhe si një shënues në hartë 2D. Pra, kur përdoruesi klikimeve përmirësim button, ne duam të shtoni aty pranë pasagjerë të anijes. Dhe ne gjithashtu duam të hequr vendin e tyre të shënuar nga bota, dhe për të hequr e tyre shënues nga harta, duke treguar se ata janë në anije tonë tani. Deri sa nuk kemi zbuluar nëse udhëtarët janë brenda rrezes së anijes tonë? E pra, distanca funksion - kështu anijes dot në distancë, duke kaluar në gjerësi dhe gjatësi, do të llogaritur distancën nga rryma Pozicioni i anijes në pikë që ju të specifikojë me atë dhënë gjerësi dhe gjatësi. Kështu që ju mund të përdorni këtë për të llogaritur Distanca nga anije të pasagjerë. Por si nuk e dini se ku pasagjerët janë? E pra, kjo është ajo ku ne do të duhet të modifikojnë funksionin populloj. Populloj Places të gjithë anëtarëve të stafit dhe pasagjerët Në botë, dhe në hartë, por nuk dyqan vendndodhjen e tyre. Pra, ndoshta ju mund të ruajë tyre të vendos shenjat dhe shënuesit në një rrjet global. Tani ka tashmë një koleksion globale ruajtjen e informacionit nga udhëtarët. Pasagjerët array dyqane secili Emri i pasagjerit dhe shtëpia e tyre. Pra, ndoshta ju mund të shtoni një parametrat pak atje për objektet e pasagjerëve. Për të na ndihmuar të zbuluar të gjithë udhëtarët brenda rrezes së anijes tonë, le të lak nëpër të gjitha udhëtarëve në rrjet udhëtarëve. Një për lak në JavaScript mund të duket diçka e tillë, shumë të ngjashme me ato për lak në C. Ose ne mund të përdorim një alternative për strukturën loop. Për i var në grup, ku unë do të vazhdojë të jetë indeksi. Por ju nuk keni nevojë të specifikojë array dot gjatësia kusht, dhe unë plus plus. Vendndodhja Çdo udhëtar është jepet me shenjat e tyre vend. Por marka vendi nuk është gjerësi dhe gjatësi. Ne kemi për të hyrë në këto parametra nga marrjen e gjeometri, duke përdorur get gjeometri për të shënuar vend. Dhe pastaj një herë ne kemi gjeometri, marrjen ose gjerësi ose gjatësi, duke përdorur këto funksione. Deri tani ne e dimë se si për të zbuluar nëse pasagjerët janë brenda Gama e anijes sonë. Pasi ne kemi këto pasagjerë, ne do të dëshironi të shtoni ndonjë pasagjerët që janë brenda që shkojnë. Ne duam të lejuar ata që të hip në, dhe të marrë një vend në anije tonë, por vetëm në qoftë se ne kemi vend të mjaftueshëm për ta. Anijes dot vende array do tregojë nëse vende janë bosh, ose i cili është në atë vend. Pra, nëse një vend është i zbrazët, atëherë se vendi do të jetë e pavlefshme. Pra iterate mbi array vende, kontrolluar për vende bosh, ruajtjen pasagjerët Në ato vende deri në ju nuk kanë ndonjë vend më shumë bosh. Dhe për fat të keq, çdo pasagjerët e tjerë do të duhet të presin për herën tjetër anijes vjen rreth. Pasi ata të marrë në anije, ne do të duam për të hequr shenjën e tyre vend, e cila është foto e tyre në botë 3d. Nëse unë të kërkuar për të hequr një p shenjë vend, atëherë unë do të merrni të gjitha tiparet nga toka ime, nga Google Earth, dhe pastaj hiqni atë vend të veçantë të shënuar duke përdorur funksionin removeChild. Pastaj në fund, le të hiqni shënues, ikona në hartë 2D për çdo pasagjerëve që ne po ringjallet. Për të hequr një shënues, m, atëherë unë do të vetëm ekzekutuar m dot setMap null. A në këtë mënyrë për çdo udhëtarëve brenda rrezes, dhe ju keni përfunduar përmirësim.