[За възпроизвеждане на музика] SPEAKER 1: Е, ние сме тук, последната P сет в CS50. Поздравете себе си от като дойде досега, тъй като вашата първа здравей светове и отпечатване пирамиди за Марио. Ти направи един сайт миналата седмица. И ние ще трябва да се направи още една тази седмица, този, който ви позволява да карам из кампуса на Харвард, бране до членовете CS50 служители, както и връщането им до тяхното жилищни сгради. Сега миналата седмица работихме в PHP, една страна на сървъра език. За тази P набор, Ние ще се въведе за JavaScript, който е клиент език страна. Така че нека да разгледаме някои от най- разпространение на кодове, което е условие за ти за това P набор. В папката JavaScript, там ще да бъде един куп JavaScript файлове. Има buildings.js, който съдържа масив на сградите около Harvard колежа, с тяхната информация и позиция. Houses.js е масив от Харвард жилищни сгради, с техните ширини и дължини. Passengers.js съдържа масив на пътници - Членовете на персонала - CS50 , че ще се върне обратно, за да техните жилищни къщи. Math3D.js, че съдържа много функции, за да правите с движението. Ако сте математически ум, След това аз приветствам ви да погледнете. Но не е нужно да се разбере всичко там. Shuttle.js, която се занимава с движение на совалката. И index.html е началната страница, където всичко се случва, наистина, когато потребител взаимодейства с обекта. Service.css е CSS стил лист, които, в допълнение към Twitter Bootstrap библиотека, контроли как index.html изглежда. И тогава ние също имаме service.js, които съдържа обслужващи функции за совалката. И тук е мястото, където отиваш, за да бъде попълване на някои от към DOS. Сега нека да разгледаме най-обекти и асоциативни масиви в JavaScript, което за всички намерения и цели са взаимозаменяеми. Ако исках да направя един обект променлива наречена пръчка, бих го декларира. А вътре в тези фигурни скоби бих укажете на ядрото е еднорог. Дървесината е череша. И дължината е 13. Сега мога да получите достъп до стойности на обекти, използващи асоциативен масив нотация. Така пръчка ядро ​​форум, не мога да определя че равно на еднорог, или покажат, че ако имам нужда. Или мога да използвам оператор точка. Wand точка дървесина се равнява на череша, и така нататък, и така нататък. Така че виждате, че асоциативни масиви и обекти в JavaScript ще бъде взаимозаменяеми, и воля дойде в доста по-удобен. След това ние виждаме множество сгради в buildings.js. Отново, множество обекти. Ако исках да се направи масив от най-добрите сгради на университета Харвард, а след това Бих го направите по следния начин. Използването на този обект нотация, където I съхранявайте корен, име, адрес, ширина и дължина за всяка една сграда обект. Нека най-бързо се говори за променливи в JavaScript. Подобно на PHP, JavaScript променливи са слабо или хлабаво написали. За да се създаде локална променлива, можете префикс името на променливата с V-A-R, VaR. Сега в JavaScript, функции ще ограничи обхвата на променливи. Така че, ако имате локална променлива в рамките на функция, след други функции Не мога да получите достъп до нея. Но за разлика от C, вериги и условия не ограничи обхвата на променливата. Така че дори и да го декларира в рамките на състояние, цялата функция ще имат достъп до нея. Сега без VAR, променливата ще бъде глобална. Така че, ако просто да обяви името и присвоите стойност, а след това тази променлива ще бъде глобална променлива в JavaScript. Сега в къщи, ние имаме асоциативен масив от тип къща обекти, където всяка къща е само на ширина и дължина. Тогава ние имаме пътниците масив, който е масив на тип обект пътник. Така че всеки пътник има потребителско име, име, и една къща. Забележете, че аз виждам от тип пътници, които наистина просто означава, че всеки обект има една и съща двойка ключове стойност. Така че всеки обект от тип пътник има потребителско име, име, и една къща. Така че това, което ни е нужно, за да направи за множеството P? Е, ние трябва да позволим на потребителите да избират до членовете на персонала, за да покажете всички Членовете на персонала, които са в момента в нашия транспорт, както и да ги оставиш. И тогава ние ще говорим и за допълнително функции, които могат да бъдат приложени за совалката P сет. Но нека да говорим за пикапа първо. Лицата на CS50 служители са били засадени целия кампус, където всеки Лицето се изпълнява като място марка на 3D земята, и като маркер на карта 2D. Така че, когато потребителят кликне върху пикапа бутон, искаме да добавим близката пътници на совалката. И ние също искаме да се премахне тяхното място марки от света, както и премахване на тяхната маркер от картата, което показва, че те са в нашата совалка сега. И как ще се открие, ако пътниците сте в обсега на нашата совалка? Е, разстоянието функция - така трансфер разстояние точка, минавайки през географската ширина и дължина, ще изчисляване на разстоянието от ток позиция на транспорт до отбележа, че вие ​​определяте с това дадена географска ширина и дължина. Така че можете да използвате това, за да се изчисли разстояние от транспорт до пътници. Но как да знам къде пътниците са? Е, това е, когато ние ще трябва да редактирате функцията попълвам. Запълни места на всички членове на персонала и пътниците в света, и в картата, но не съхранява тяхното местоположение. Така че може би ще може да съхранява своята поставите марка и маркери в някои глобалния масив. Сега вече е глобален масив съхранение на информацията от страна на пътниците. Съхранява пътници масиви всеки име на пътника и техния дом. Така че може би можете да добавите няколко параметъра там, за да пътнически обекти. За да ни помогне да се открият всички пътници в обсега на нашия транспорт, да цикъл през всички пътници в масива пътници. А за линия в JavaScript може да изглежда нещо като това, много подобен на тези за линия в C. Или можем да използваме един алтернатива за контур структура. За VAR аз в масив, където I все още ще бъде на индекса. Но не е нужно да се уточни Дължината на масива точка състояние, и аз плюс плюс. Местоположение Всеки пътник е дадена от тяхно място марка. Но марката място не е географска ширина и дължина. Ние имаме достъп до тези параметри от получаване на геометрията, използвайки GET геометрията на марката място. И тогава, след като имаме геометрията, получаване или географската ширина или дължина, като се използват тези функции. Така че сега ние знаем как да се открие дали пътниците са в рамките на Обхватът на нашата совалка. След като имаме тези пътници, ние ще искате да добавите и всички пътници, които са в рамките на този диапазон. Искаме да им позволи да прескачате, и седнете на нашия транспорт, но само ако имаме достатъчно място за тях. Масивът транспорт дот места ще посочи дали седалките са празни, или кой е на това място. Така че, ако дадена седалка е празна, а след това това място ще бъде нула. Така че обхождане на масива места, проверка за празни места, съхраняване пътниците в тези места, докато не нямат никакви по-празни места. И за съжаление, всички други пътници ще трябва да се изчака следващия път, когато совалката се обадило. След като се качи на совалката, ние ще искате за отстраняване на мястото им марка, която е тяхна снимка в 3D свят. Ако исках да се премахне място марка р, тогава аз ще получите всички характеристики от моята земя, от Google Земя, и след това извадете, че специфично място марка използвате функцията removeChild. Тогава най-накрая, нека да премахнете маркера, иконата на картата 2D за всеки пътнически, че ние се вдига. За да премахнете маркер, m, тогава ще Просто изпълни m точка setMap нищожна. Направете това за всички пътници в рамките на обхвата, и сте готови пикап.