[Muusika mängib] SPEAKER 1: Noh, siin me oleme, Viimase P seatud CS50. End õnnitleda omamast jõudnud nii kaugele, sest oma esimese tere maailmad ja printimisest püramiide ​​Mario. Sa tegid veebilehel eelmisel nädalal. Ja me teeme veel ühe Sel nädalal, üks, mis võimaldab teil sõita ringi Harvard campus, korjamine üles CS50 töötajad ja viies need tagasi oma elumajad. Nüüd viimasel nädalal tegime PHP, serveripoolne keel. Sel P komplekt, me lähme sisse JavaScript, mis kliendi poolel keeles. Võtame pilk mõned jaotus kood, mis on sätestatud, et teid selle P komplekti. In JavaScript kausta, siis hunnik JavaScript failid. Seal buildings.js, mis sisaldab array hoonete ümber Harvard campus, oma andmed ja positsioon. Houses.js on massiivi Harvard elamute, nende pikkus-ja laiuskraadid. Passengers.js sisaldab hulga reisijaid - CS50 töötajad - et sul tuleb tuua tagasi nende elumajad. Math3D.js, mis sisaldab palju funktsioonid pistmist liikumine. Kui oled matemaatiliselt mõtlemisega, siis mul on hea meel te võtate pilk. Aga sa ei pea aru kõik on seal. Shuttle.js, mis tegeleb süstik liikumine. Ja index.html on kodulehekülg, kus kõik juhtub, tegelikult, kui kasutaja suheldes kohas. Service.css on CSS stiili lehed, mis lisaks Twitter Bootstrap raamatukogu kontroll kuidas index.html välimus. Ja siis on meil ka service.js, mis sisaldab teenustegevusega buss. Ja siin on koht, kus sa lähed, et olla täites mõned DOS. Nüüd võtame pilk objektid ja assotsiatiivne massiivid JavaScript, mis kõik kavatsused ja eesmärkidel on omavahel vahetatavad. Kui ma tahtsin teha objekti muutuja nimetatakse võlukepp, ma kuulutada. Ja sees need looksulg oleksin täpsustada tuum on ükssarvik. Puit on kirss. Ja pikkus on 13. Nüüd ma saan kasutada ka väärtused objekte kasutades assotsiatiivne massiiv märke. Nii võlukepp index tuum, ma ei saa määrata mis võrdub ükssarvik või kontrollige, et kui mul on vaja. Või saan kasutada dot operaator. Wand dot puit võrdub kirss, ja nii edasi, ja nii edasi. Nii et näete, et assotsiatiivne massiivid ja objektid JavaScript ei kavatse olla vahetatavad, ja tulevad üsna mugav. Siis näeme hulgaliselt hooneid aastal buildings.js. Jällegi massiivi objektid. Kui ma tahtsin teha massiivi parim hoonete Harvard loengusse, siis Ma teeks järgmine. Selle objekti märke, kus Ma hoida root, nime, aadressi, laius-ja pikkuskraad iga ühe hoone objekti. Lähme kiiresti rääkida muutujad JavaScript. Nagu PHP, JavaScript muutujad on nõrgalt või nõrgalt tipitud. Luua kohaliku muutuja, siis eesliide muutuja nime V-A-R, var. Nüüd JavaScript, funktsioonid piirata ulatust muutujad. Nii et kui teil on kohalik muutuja funktsioon, siis muud funktsioonid ei saa seda kasutada. Kuid erinevalt C, silmad ja tingimused ei piirata ulatust muutuja. Nii et isegi kui sa kuulutada sees tingimus, kogu funktsioon ei toimi on juurdepääs sellele. Nüüd ilma var muutuja on ülemaailmne. Nii et kui sa lihtsalt tunnistada nimi ja omistada väärtus, siis see muutuja on globaalne muutuja JavaScript. Nüüd maja, meil on assotsiatiivne massiivi maja tüüp esemetega, kui iga maja on lihtsalt laiuskraad ja pikkuskraad. Siis on meil reisijaid massiiv, mis on massiiv Objekti tüüp reisija. Nii et iga reisija kasutajanime nimi ja maja. Pange tähele, et ma näen tüüpi Reisija mis tegelikult tähendab lihtsalt et iga objekt on sama põhiväärtus paari. Nii et iga objekti tüüp reisija kasutaja nimi, nimi ja maja. Niisiis, mida me peame teha P komplekti? Noh, meil on vaja, et kasutajad saaksid valida üles töötajaga kuva kõik töötajad, mis on praegu Meie buss ja tilk need ära. Ja siis me räägime ka pildi elemente, mida saab rakendada shuttle P komplekti. Aga räägime pikap esimene. Nägu CS50 personal on istutada kogu campus, kus iga nägu on rakendatud koht märk 3D maakera, ja kui SM 2D kaardi. Nii et kui kasutaja klõpsab pikap nuppu, tahame lisada lähedal reisijad buss. Ja me tahame, et eemaldada oma koht märgi maailma ja eemaldada nende markerit kaart, mis näitab, et nad on meie buss nüüd. Niisiis, kuidas me avastada, kui reisijate tööraadius meie buss? Noh, funktsioon kaugus - nii shuttle dot kaugus, mis kulgeb laius-ja pikkuskraadid, eks arvutada kaugus praeguse asend shuttle punkt, et te määrate selle antud laiuskraad ja pikkuskraad. Nii saab seda kasutada, et arvutada kaugus shuttle reisijat. Aga kuidas sa tead, kus reisijad on? Noh, see on koht, kus me peame muuta asustada funktsioon. Asustada kohad kõik töötajad ja reisijad maailma, ja kaardi sisse, aga ei salvestada oma asukohta. Nii et ehk saate salvestada oma pange märgid ja markerid mõnel globaalne massiiv. Nüüd on juba olemas globaalne massiiv teabe säilitamise reisijatelt. Reisijate hulga kauplustes iga reisija nimi ja oma maja. Nii et äkki saate lisada mõned parameetrid seal reisijale objektid. Selleks, et aidata meil tuvastada kõik reisijad levialas meie buss, lähme silmus läbi kõik reisijad aasta reisijate hulga. Loop JavaScript võiks välja midagi sellist, väga sarnane need for loop C. Või saame kasutada alternatiiv loop struktuuri. Var i massiivi, kus ma ikkagi indeks. Aga sa ei pea täpsustama massiivi dot pikkus seisund ja ma pluss pluss. Iga reisija asukoht on arvestades nende koht märk. Aga koht ei ole kaubamärk laius-ja pikkuskraadid. Meil on juurdepääs nende parameetrite järgi saada geomeetria, kasutades GET geomeetria koht märk. Ja siis, kui meil on geomeetria, saada kas laius või pikkuskraad, kasutades neid funktsioone. Nüüd me teame, kuidas kindlaks teha, kas reisijad jooksul Valik meie buss. Kui meil on need reisijad, me tulen soovite lisada reisijad, kes on selles vahemikus. Me tahame, et neil oleks võimalik hop, ja istuge meie shuttle, kuid ainult kui meil on piisavalt ruumi nende jaoks. Shuttle dot istmed massiiv märkida, kas istmed on tühi, või kes on selle asukoht. Nii et kui iste on tühi, siis et iste on null. Nii Käi istmed massiiv, kontrollimine tühjad kohad, hoidmine reisijaid need istmed, kuni olete ei ole enam tühjad kohad. Ja kahjuks muid reisijaid ei pea ootama Järgmine kord, buss on ringi. Kui nad on shuttle, me tahame kõrvaldada nende koht märk, mis on ka foto 3D maailmas. Kui ma tahan, et eemaldada koht märk p, siis ma saaksin kõik funktsioonid minu maa, Google Earth, ja eemaldab selle konkreetse koha märgi abil removeChild funktsioon. Siis lõpuks, olgem eemaldada marker, ikooni 2D kaardi iga reisija, et me hoogustumas. Eemaldamiseks marker, m, siis ma lihtsalt ellu m dot setMap null. Kas see reisijate levialas, ja olete valmis pikap.