1 00:00:00,000 --> 00:00:02,862 >> [MUSIC JOC] 2 00:00:02,862 --> 00:00:10,030 3 00:00:10,030 --> 00:00:11,580 >> DAVID MALAN: Aceasta este CS50. 4 00:00:11,580 --> 00:00:12,880 Acesta este începutul săptămânii noua. 5 00:00:12,880 --> 00:00:15,797 Și aceasta este ceea ce ar trebui fost ziua de nastere 200 de ani d-lui Boole. 6 00:00:15,797 --> 00:00:17,630 Deci acest lucru este semenii la care ne-am referit 7 00:00:17,630 --> 00:00:21,800 destul de câteva ori despre utilizarea Variabile booleene adevărat și fals, 8 00:00:21,800 --> 00:00:22,910 1 și 0 și astfel. 9 00:00:22,910 --> 00:00:25,270 Și acest lucru a fost a lui Google tribut să-l azi. 10 00:00:25,270 --> 00:00:26,489 El ar fi împlinit 200. 11 00:00:26,489 --> 00:00:28,280 Deci, dacă doriți să alături de noi pentru CS50 masa de prânz, 12 00:00:28,280 --> 00:00:30,279 aruncăm o privire la link-ul pe site-ul cursului. 13 00:00:30,279 --> 00:00:33,580 Și astfel de fețe și prieteni ca acestea vă așteaptă aici, în Cambridge. 14 00:00:33,580 --> 00:00:35,360 Faces ca acestea vă așteaptă în New Haven. 15 00:00:35,360 --> 00:00:37,800 Și, de fapt, Ken în New Haven făcut cu amabilitate 16 00:00:37,800 --> 00:00:41,594 ceea ce se numește o GIF animat de Eli aici, la o recenta lunch-- un GIF este încă 17 00:00:41,594 --> 00:00:44,260 un alt format de fișier grafic, cu care ești familiar-- că 18 00:00:44,260 --> 00:00:46,300 arată un pic ceva de genul asta. 19 00:00:46,300 --> 00:00:48,179 Deci, doar o secvență de-- OK. 20 00:00:48,179 --> 00:00:49,720 Nimeni de aici în Cambridge râde. 21 00:00:49,720 --> 00:00:51,720 Dar, în New Haven, acest este într-adevăr amuzant, nu? 22 00:00:51,720 --> 00:00:52,350 In regula. 23 00:00:52,350 --> 00:00:53,940 >> Deci, nu ne alătura acolo. 24 00:00:53,940 --> 00:00:55,900 Aici, la Harvard, în mod specific, miercuri, 25 00:00:55,900 --> 00:00:59,480 daca esti un al doilea de studentie sau student în anul întâi even-- sau chiar de gândire de a face junior-- 26 00:00:59,480 --> 00:01:01,563 un comutator în calculator știință, știu că nu va 27 00:01:01,563 --> 00:01:04,440 fi un CS consiliere corect acest Miercuri, la scurt timp după clasa 28 00:01:04,440 --> 00:01:08,040 la 04:00 în calculator construcție știință Maxwell Dworkin. 29 00:01:08,040 --> 00:01:11,890 Vom pune acest lucru pe cursului site-ul de mâine, de asemenea. 30 00:01:11,890 --> 00:01:14,430 Donuts, mi sa spus, va fi servit. 31 00:01:14,430 --> 00:01:15,180 >> In regula. 32 00:01:15,180 --> 00:01:18,790 Story-- atât de amuzant am fost poking în jurul valorii de pe internet, 33 00:01:18,790 --> 00:01:23,575 și am găsit niște arhive vechi de fostul meu site-ului. 34 00:01:23,575 --> 00:01:25,950 Și se pare out-- jurul acestui timp, se pare foarte în timp util 35 00:01:25,950 --> 00:01:28,910 de când am aduna că alegerile UC sunt pe cale să uneltele din nou. 36 00:01:28,910 --> 00:01:32,230 Așa că am fugit de UC, a pierdut lamentabil. 37 00:01:32,230 --> 00:01:34,770 Și poate acest lucru a fost în parte de ce. 38 00:01:34,770 --> 00:01:37,600 Deci, acest lucru a fost site-ul meu la momentul respectiv. 39 00:01:37,600 --> 00:01:40,477 Din anumite motive, am crezut că a fost o idee bună, înainte de a spune oamenilor 40 00:01:40,477 --> 00:01:43,310 ce platforma mea a fost și motivul pentru care ar trebui să voteze pentru mine, că au 41 00:01:43,310 --> 00:01:47,770 pentru Click pentru a intra pentru a afla că informații, care, în retrospectivă este 42 00:01:47,770 --> 00:01:48,660 un fel de înfiorător. 43 00:01:48,660 --> 00:01:50,910 Nu prea stiu ce a fost asta. 44 00:01:50,910 --> 00:01:53,140 >> Dar cu siguranță nu a făcut- ajuta campania mea. 45 00:01:53,140 --> 00:01:56,874 Am constatat, de asemenea, că de senior year-- Am avut acest calendar Muppet. 46 00:01:56,874 --> 00:01:58,540 Muppets au fost un fel de în vogă atunci. 47 00:01:58,540 --> 00:01:59,456 Sau poate că nu au fost. 48 00:01:59,456 --> 00:02:01,790 Am avut un calendar Muppet atunci. 49 00:02:01,790 --> 00:02:04,860 Și am crezut că ar fi misto de numele computerul meu pe rețeaua Harvard 50 00:02:04,860 --> 00:02:07,460 frogman.student.harvard.edu. 51 00:02:07,460 --> 00:02:10,370 La acea vreme, am avut toate unic nume de gazdă identificabile. 52 00:02:10,370 --> 00:02:13,150 Și ați putea alege unele vanitate numele în loc de propriul nume. 53 00:02:13,150 --> 00:02:15,580 Și m-am dus cu înotător subacvatic pentru un motiv oarecare. 54 00:02:15,580 --> 00:02:19,040 >> Și apoi am started-- am petrecut o mulțime de timp clic pentru a ajunge aceste link-uri 55 00:02:19,040 --> 00:02:20,280 în această dimineață. 56 00:02:20,280 --> 00:02:24,690 Și aceasta a fost pagina mea despre, care acum se pare un fel de adorabil. 57 00:02:24,690 --> 00:02:28,210 Dar mărturisește, de asemenea, la doar Cât de departe a ajuns tehnologia. 58 00:02:28,210 --> 00:02:30,310 Adică, din nou în a doua zi, un 486 era ceva. 59 00:02:30,310 --> 00:02:34,090 Aceste zile, e super, super, foarte lent și mai puțin bine 60 00:02:34,090 --> 00:02:36,216 decât s-ar putea avea în dumneavoastră buzunare proprii aceste zile. 61 00:02:36,216 --> 00:02:38,465 Nu e mai mult pe acolo a fost chiar mai jenant. 62 00:02:38,465 --> 00:02:39,770 Așa că vom lăsa la asta. 63 00:02:39,770 --> 00:02:42,640 Dar asta a fost prima mea incursiune în web-- oh, nu. 64 00:02:42,640 --> 00:02:43,180 Asta nu a fost. 65 00:02:43,180 --> 00:02:47,000 Primul meu incursiune reală în programare web a fost acest site, pe care tocmai am uitat. 66 00:02:47,000 --> 00:02:50,620 La un moment dat, am învățat cum să face imagini de fundal repetitive. 67 00:02:50,620 --> 00:02:55,260 Și așa am găsit asta Tigla eficiente, ca jucător de hochei, fotbal, golf și 68 00:02:55,260 --> 00:02:58,040 minge, sau orice altceva care este pentru site-ul Frosh AI. 69 00:02:58,040 --> 00:03:01,390 Și acest lucru a fost de fapt, cu adevărat Primul proiect web-based am luat on-- 70 00:03:01,390 --> 00:03:03,880 Cred că al doilea de studentie an, year-- junior 71 00:03:03,880 --> 00:03:07,622 după ce a luat CS50 CS51 și, o comune claselor de continuare. 72 00:03:07,622 --> 00:03:09,330 Am observat în căutarea prin arhive 73 00:03:09,330 --> 00:03:12,150 ca unul dintre succesorii mei și prieteni, Lee, un fel de schimbat 74 00:03:12,150 --> 00:03:13,480 drepturile de autor pentru sine. 75 00:03:13,480 --> 00:03:17,520 Dar asta era într-adevăr ceva care Ar trebui să dețină jena la. 76 00:03:17,520 --> 00:03:19,370 Dar la momentul respectiv, acest a fost primul site, 77 00:03:19,370 --> 00:03:22,220 așa cum am spus acum câteva săptămâni, prin care ar putea student în anul întâi 78 00:03:22,220 --> 00:03:24,350 înregistrați pentru sport intramural aici. 79 00:03:24,350 --> 00:03:27,950 Și așa se pare că imagini de fundal că 80 00:03:27,950 --> 00:03:29,530 așa nu sunt o idee prea bună. 81 00:03:29,530 --> 00:03:31,840 Dar web era nou, și tot am fost experimente. 82 00:03:31,840 --> 00:03:34,310 Și aceasta este ceea ce am aparent făcut la momentul respectiv. 83 00:03:34,310 --> 00:03:34,810 In regula. 84 00:03:34,810 --> 00:03:38,020 Deci, fără alte formalități, am schimba unelte astăzi pentru a vă oferi, într-adevăr, 85 00:03:38,020 --> 00:03:42,250 ultima piesa care le-ar putea găsi util mai ales pentru proiectele finale 86 00:03:42,250 --> 00:03:44,780 dar, de asemenea, că va începe să face Wide Web întreaga lume 87 00:03:44,780 --> 00:03:46,680 simt un pic mai ușor de înțeles. 88 00:03:46,680 --> 00:03:49,460 Într-adevăr, suntem de gând să introducă încă un limbaj de programare 89 00:03:49,460 --> 00:03:52,474 numit JavaScript care este similară și diferite în moduri diferite 90 00:03:52,474 --> 00:03:54,140 de la limbi ne-am uitat la până în prezent. 91 00:03:54,140 --> 00:03:55,807 >> Deci C, amintesc, este acest limbaj compilat. 92 00:03:55,807 --> 00:03:57,473 Trebuie să-l rulați prin intermediul unui compilator. 93 00:03:57,473 --> 00:03:59,810 Ai codul sursă de opoziție cod, sau zerouri și cele. 94 00:03:59,810 --> 00:04:03,000 Iar acestea sunt zerouri și cele care CPU, Central Processing Unit, 95 00:04:03,000 --> 00:04:04,360 de fapt înțelege. 96 00:04:04,360 --> 00:04:06,610 PHP, prin contrast, nu este un limbaj compilat. 97 00:04:06,610 --> 00:04:08,772 Este un ce? 98 00:04:08,772 --> 00:04:09,980 Este un limbaj interpretat. 99 00:04:09,980 --> 00:04:11,750 Deci, există niște programe numit un interpret care 100 00:04:11,750 --> 00:04:13,708 trebuie să citească top it-- la jos, stânga pentru a right-- 101 00:04:13,708 --> 00:04:16,519 și dau seama ce toate sintaxa face și mijloace, 102 00:04:16,519 --> 00:04:20,200 fie că este vorba o buclă sau o condiție sau orice alt număr de programare 103 00:04:20,200 --> 00:04:20,740 construiește. 104 00:04:20,740 --> 00:04:22,210 Așa că e un limbaj interpretat. 105 00:04:22,210 --> 00:04:23,910 >> Apoi am introdus HTML. 106 00:04:23,910 --> 00:04:26,440 Și HTML nu este chiar un limbaj de programare. 107 00:04:26,440 --> 00:04:28,110 Ne-ar ea ceea ce numesc? 108 00:04:28,110 --> 00:04:31,650 Un limbaj de marcare, care este doar un fel de mod fantezist de a spune ea 109 00:04:31,650 --> 00:04:35,820 nu are construcții de programare, cum ar fi am văzut chiar și din nou în ziua zero. 110 00:04:35,820 --> 00:04:36,720 Nu există bucle. 111 00:04:36,720 --> 00:04:37,920 Nu există condiții. 112 00:04:37,920 --> 00:04:40,820 Este într-adevăr este o limbă despre marcarea de rezervă a datelor 113 00:04:40,820 --> 00:04:43,620 și formatarea sau structurarea l într-un fel. 114 00:04:43,620 --> 00:04:46,147 >> CSS, între timp, în mod similar nu un limbaj de programare. 115 00:04:46,147 --> 00:04:47,730 Este chiar mai mult orientate spre punct de vedere estetic. 116 00:04:47,730 --> 00:04:50,470 Și vă permite să sortați de ajusta lucruri cum ar fi dimensiunea fontului și culori 117 00:04:50,470 --> 00:04:51,850 și plasare și toate astea. 118 00:04:51,850 --> 00:04:52,370 Apoi am avut 119 00:04:52,370 --> 00:04:53,160 >> SQL. 120 00:04:53,160 --> 00:04:56,010 Deci SQL este într-adevăr o programare limba într-un fel, 121 00:04:56,010 --> 00:04:59,330 deși adaptate în mod specific la bazele de date. 122 00:04:59,330 --> 00:05:03,347 Dar, chiar dacă vă prezint doar la selectați și introduceți și ștergeți și să actualizeze 123 00:05:03,347 --> 00:05:05,430 și un cuplu de alții, dovedește poți de fapt 124 00:05:05,430 --> 00:05:07,380 scrie funcții sau proceduri, astfel cum acestea sunt 125 00:05:07,380 --> 00:05:11,270 numit, în SQL care arata si actioneaza destul ca funcții PHP și C. 126 00:05:11,270 --> 00:05:12,390 Deci, știu că cei exista. 127 00:05:12,390 --> 00:05:15,348 Dar noi nu deranja chiar cu ei așa cum am zgâria doar suprafața de aici. 128 00:05:15,348 --> 00:05:18,600 Și apoi JavaScript, ultimul de limbile noastre introdus oficial. 129 00:05:18,600 --> 00:05:21,029 Deci JavaScript, de asemenea, este un limbaj interpretat. 130 00:05:21,029 --> 00:05:23,070 Și cei familiarizați, fac doriți să-l distinge 131 00:05:23,070 --> 00:05:26,960 cu unele caracteristici la ambii C și PHP? 132 00:05:26,960 --> 00:05:28,300 Ce îl face diferit? 133 00:05:28,300 --> 00:05:29,650 >> Audiența: Nu este compilat. 134 00:05:29,650 --> 00:05:29,930 >> DAVID MALAN: Spune din nou? 135 00:05:29,930 --> 00:05:31,200 >> Audiența: Nu este compilat. 136 00:05:31,200 --> 00:05:31,930 >> DAVID MALAN: Nu este compilat. 137 00:05:31,930 --> 00:05:33,450 Deci,, de asemenea, este interpretată. 138 00:05:33,450 --> 00:05:34,760 Deci nu e compilat. 139 00:05:34,760 --> 00:05:37,210 Dar că un pic ca PHP face. 140 00:05:37,210 --> 00:05:39,545 Dar este încă diferită de PHP într-un fel de frapant, 141 00:05:39,545 --> 00:05:40,920 cel puțin în modul în care la vom folosi. 142 00:05:40,920 --> 00:05:41,205 Da? 143 00:05:41,205 --> 00:05:41,940 >> Audiența: Se rulează client-side. 144 00:05:41,940 --> 00:05:44,000 >> DAVID MALAN: Se rulează client-side, de obicei. 145 00:05:44,000 --> 00:05:47,190 Asta e într-adevăr distingerea caracteristică pentru noi acum. 146 00:05:47,190 --> 00:05:51,170 C a fost pe partea de server, în sensul că am făcut totul în IDE CS50. 147 00:05:51,170 --> 00:05:53,630 PHP a fost până acum pe parte de server, în măsura în 148 00:05:53,630 --> 00:05:56,550 cum, de asemenea, devine interpreted-- nu compilat, dar interpreted-- 149 00:05:56,550 --> 00:06:00,690 interior CS50 IDE, care, desigur, este doar un server sau servere în cloud. 150 00:06:00,690 --> 00:06:03,070 >> Dar JavaScript, chiar și daca te duci 151 00:06:03,070 --> 00:06:07,000 pentru a începe scris-o pentru, să zicem, PSET opt și poate ultima projects-- esti 152 00:06:07,000 --> 00:06:09,620 O să-l chiar în IDE CS50 și salvați-l 153 00:06:09,620 --> 00:06:14,760 în fișierele din IDE CS50, CS50 IDE și, la rândul lor, serverele cloud 154 00:06:14,760 --> 00:06:19,160 pe care este gazduit, nu sunt de gând de a interpreta sau de a executa codul. 155 00:06:19,160 --> 00:06:23,880 Mai degrabă, se va fi trimis în formular nealterată până la browser-ul. 156 00:06:23,880 --> 00:06:26,990 Și se apoi va fi IE sau Chrome sau Firefox sau Safari 157 00:06:26,990 --> 00:06:30,697 sau orice altceva care de fapt interpretează ea, de sus în jos, la stânga la dreapta. 158 00:06:30,697 --> 00:06:32,780 Deci distingerea cheie caracteristică pentru ziua de azi 159 00:06:32,780 --> 00:06:36,110 este că JavaScript este client-side și PHP, de exemplu, 160 00:06:36,110 --> 00:06:37,690 A fost de server-side. 161 00:06:37,690 --> 00:06:40,920 Acum, acest lucru are implicatii interesante pentru, cum ar fi, de proprietate intelectuală 162 00:06:40,920 --> 00:06:42,660 si care pot vedea de fapt codul. 163 00:06:42,660 --> 00:06:44,860 Și într-adevăr, poti sa te duci pe web și a vedea cele mai 164 00:06:44,860 --> 00:06:47,530 orice cod care cineva are scris în JavaScript. 165 00:06:47,530 --> 00:06:50,230 Uneori este ușor de citit, Uneori este obfuscated. 166 00:06:50,230 --> 00:06:52,550 Dar mai mult pe faptul că, în timp util. 167 00:06:52,550 --> 00:06:57,530 >> Deci JavaScript, destul de frumos, este super-similare, punct de vedere sintactic, la C. 168 00:06:57,530 --> 00:06:59,364 Și la fel ca PHP, nu exista nici o funcție principală. 169 00:06:59,364 --> 00:07:02,113 Dacă doriți să începeți scris Cod JavaScript, așa cum veți vedea astăzi, 170 00:07:02,113 --> 00:07:03,270 doar de a începe scris-o. 171 00:07:03,270 --> 00:07:06,910 Dar este, veți vedea, în special utile în contextul browsere web. 172 00:07:06,910 --> 00:07:09,820 Cu toate acestea, micul meu disclaimer-- obicei earlier-- 173 00:07:09,820 --> 00:07:13,790 a fost să spun că poți ce în ce mai azi utilizare JavaScript pe parte de server 174 00:07:13,790 --> 00:07:17,655 folosind un cadru de lux numit Node.js că unele dintre aplicațiile proprii CS50 lui 175 00:07:17,655 --> 00:07:18,280 sunt scrise în. 176 00:07:18,280 --> 00:07:20,640 Verificați 50 folosește de fapt Node.js. 177 00:07:20,640 --> 00:07:24,140 Dar vom concentra pe JavaScript client-side aici încolo. 178 00:07:24,140 --> 00:07:26,750 >> Deci, aici este un set de condiții în PHP. 179 00:07:26,750 --> 00:07:29,350 Ne pare rău, in-- de fapt, că declarație, este de asemenea corectă. 180 00:07:29,350 --> 00:07:32,200 Aici este, de asemenea, un set de Condiții în JavaScript. 181 00:07:32,200 --> 00:07:35,560 Sintactic, este identic cu C și la PHP. 182 00:07:35,560 --> 00:07:39,040 Expresii domnului Boole sunt, În mod similar, sintactic 183 00:07:39,040 --> 00:07:41,190 identic cu ambii C și PHP. 184 00:07:41,190 --> 00:07:44,100 Avem, de asemenea switch-uri în JavaScript care arata identic. 185 00:07:44,100 --> 00:07:46,350 Avem pentru bucle, care sunt structurat identic, 186 00:07:46,350 --> 00:07:48,140 în timp ce buclele, face în timp ce buclele. 187 00:07:48,140 --> 00:07:49,980 >> Asta e un pic diferit. 188 00:07:49,980 --> 00:07:53,120 PHP a avut pentru fiecare construct că ați putea fi utilizați 189 00:07:53,120 --> 00:07:55,320 sau vor folosi în PSET șapte, poate. 190 00:07:55,320 --> 00:07:59,460 JavaScript are această versiune specială a pentru cazul în care vă spune literalmente ceva 191 00:07:59,460 --> 00:08:03,864 ca de cheie variabilă în obiect, care este un mod foarte succint de a spune, 192 00:08:03,864 --> 00:08:06,780 dacă am o object-- și vom vorbim despre acestea din nou într-o moment-- 193 00:08:06,780 --> 00:08:10,370 și vreau să repeta peste tot din perechile de valori-cheie în interiorul, 194 00:08:10,370 --> 00:08:13,620 Nu trebuie să dau seama cum să index numeric le cu zero, unu, 195 00:08:13,620 --> 00:08:14,580 doi, trei. 196 00:08:14,580 --> 00:08:15,900 >> Pot să spun literalmente acest lucru. 197 00:08:15,900 --> 00:08:20,740 Și pe fiecare iterație, JavaScript pentru mine va actualiza cheia variabilă 198 00:08:20,740 --> 00:08:24,810 să fie prima cheie, apoi tasta următoare, apoi tasta următoare, apoi tasta următoare, 199 00:08:24,810 --> 00:08:25,510 si asa mai departe. 200 00:08:25,510 --> 00:08:30,000 Și eu pot ajunge la valoarea de tratare un obiect în JavaScript, așa cum vom vedea, 201 00:08:30,000 --> 00:08:32,584 ca și cum este o tablou asociativ în PHP. 202 00:08:32,584 --> 00:08:35,750 Într-adevăr, dacă în cele din urmă înfășurat dvs. minte în jurul o tablou asociativ este 203 00:08:35,750 --> 00:08:40,140 in PHP, vă puteți gândi la ea pentru ca acum identice cu un obiect în JavaScript. 204 00:08:40,140 --> 00:08:42,030 Dar asta e un pic de o simplificare. 205 00:08:42,030 --> 00:08:47,230 >> Arrays uite, destul de frumos, identice a PHP cu excepția unui singur caracter. 206 00:08:47,230 --> 00:08:51,425 Există un singur lucru lipseste aici că am făcut vedea săptămâna trecută cu PHP. 207 00:08:51,425 --> 00:08:52,050 Ce se omis? 208 00:08:52,050 --> 00:08:53,310 Da? 209 00:08:53,310 --> 00:08:54,090 Nici un semn dolar. 210 00:08:54,090 --> 00:08:56,240 Deci ne-am întors la o mai lume normală în cazul în care 211 00:08:56,240 --> 00:08:58,050 Variabilele nu au semne de dolari. 212 00:08:58,050 --> 00:09:00,810 Dar ce faci le prefixul cu var, de obicei. 213 00:09:00,810 --> 00:09:02,230 Și var înseamnă variabilă. 214 00:09:02,230 --> 00:09:06,440 Și la fel ca PHP este liber typed-- care există tipuri, 215 00:09:06,440 --> 00:09:10,120 există numere și șiruri și flotoare și așa forth-- 216 00:09:10,120 --> 00:09:11,570 JavaScript are în mod similar tipuri. 217 00:09:11,570 --> 00:09:15,470 Dar e liber tipizat în care Noi, programatorii nu trebuie să le specificați. 218 00:09:15,470 --> 00:09:18,980 Trebuie doar să fim conștienți că există diferite tipuri. 219 00:09:18,980 --> 00:09:21,690 >> Variabile, meanwhile-- aici cum am putea declara "Bună ziua, lume" 220 00:09:21,690 --> 00:09:22,230 ca un șir. 221 00:09:22,230 --> 00:09:24,890 Observați că este identic cu PHP dar nici un semn dolar. 222 00:09:24,890 --> 00:09:27,120 Și acest lucru este ceva vom începe să vedeți mai mult astăzi, 223 00:09:27,120 --> 00:09:30,990 prin care aveți un obiect cu chei și valori. 224 00:09:30,990 --> 00:09:32,990 Și, dacă doriți să încercați deduce din ultima week-- 225 00:09:32,990 --> 00:09:34,730 sintaxa este un pic diferit. 226 00:09:34,730 --> 00:09:39,740 Un pic de bun-simț, dar check-- câte chei pare acest obiect pentru a avea? 227 00:09:39,740 --> 00:09:40,850 Deci, eu văd patru. 228 00:09:40,850 --> 00:09:43,560 Văd două. 229 00:09:43,560 --> 00:09:44,680 >> Deci, este de fapt două. 230 00:09:44,680 --> 00:09:47,260 Deci, aceasta este o colecție de două perechi cheie-valoare. 231 00:09:47,260 --> 00:09:49,820 Cheia este un simbol a cărui valoare este de FB. 232 00:09:49,820 --> 00:09:52,620 Cheia este prețul a cărui valoare este de 101.53. 233 00:09:52,620 --> 00:09:54,230 Deci, acestea sunt două perechi cheie-valoare. 234 00:09:54,230 --> 00:09:58,120 Și amintiți-vă, PHP-- iar acest lucru este din nou doar un fel de diferență sintactice. 235 00:09:58,120 --> 00:10:00,170 Nu e tot ce intelectual interesant. 236 00:10:00,170 --> 00:10:04,610 PHP ar fi scris același lucru ca Citat follows--, egal. 237 00:10:04,610 --> 00:10:06,730 Și am schimba aceste pentru a între paranteze drepte. 238 00:10:06,730 --> 00:10:11,240 Și apoi am schimba acest lucru pentru a un cuvânt citat, "preț". 239 00:10:11,240 --> 00:10:12,500 Și apoi eu nu folosesc un colon. 240 00:10:12,500 --> 00:10:15,060 Ce am folosit săptămâna trecută? 241 00:10:15,060 --> 00:10:18,290 Da, semnul egal săgeată notație funky. 242 00:10:18,290 --> 00:10:21,470 >> Și apoi am făcut același lucru aici. 243 00:10:21,470 --> 00:10:23,580 Acelasi lucru aici. 244 00:10:23,580 --> 00:10:24,240 Și asta e tot. 245 00:10:24,240 --> 00:10:27,752 Deci e în regulă dacă acest lucru nu are într-adevăr scufundat în memoria doar 246 00:10:27,752 --> 00:10:29,960 dar pentru că este într-adevăr intelectual neinteresant. 247 00:10:29,960 --> 00:10:31,660 E doar diferențe sintactice. 248 00:10:31,660 --> 00:10:33,230 Dar ideile sunt exact la fel. 249 00:10:33,230 --> 00:10:35,910 În interiorul acestei variabile citat în JavaScript 250 00:10:35,910 --> 00:10:39,020 este o colecție de perechi cheie-valoare, dintre care unul este simbol, dintre care unul 251 00:10:39,020 --> 00:10:39,690 este prețul. 252 00:10:39,690 --> 00:10:42,340 Și eu pot ajunge la aceste valori cu următoarea sintaxă. 253 00:10:42,340 --> 00:10:46,280 La fel ca în PHP, am putut face ceva like-- să 254 00:10:46,280 --> 00:10:48,590 mi fac această casetă un pic mai mare. 255 00:10:48,590 --> 00:10:52,750 La fel ca în PHP, am putut face astea-- oh, la naiba. 256 00:10:52,750 --> 00:10:53,250 Haide. 257 00:10:53,250 --> 00:10:56,350 258 00:10:56,350 --> 00:11:00,800 >> La fel ca în PHP-- OK, vom utilizați doar note prezentator. 259 00:11:00,800 --> 00:11:06,010 La fel ca în PHP, nu pot face $ $ citat citat ["simbol"], 260 00:11:06,010 --> 00:11:08,860 și acest lucru mă va primi valoarea "simbol." 261 00:11:08,860 --> 00:11:12,800 În JavaScript, o să fie identic, prin care pot face acest lucru doar. 262 00:11:12,800 --> 00:11:14,850 Singurul lucru care-i lipsește este semnul dolar. 263 00:11:14,850 --> 00:11:17,470 >> Deci destul de frumos, atunci, nu e nu tot atât de mult sintaxa nou. 264 00:11:17,470 --> 00:11:21,025 Deci, ceea ce astăzi ne vom concentra pe, într-adevăr, este unele dintre ideile și cererile. 265 00:11:21,025 --> 00:11:22,900 Și primul astfel de aplicație care s-ar putea 266 00:11:22,900 --> 00:11:26,090 au văzut dacă scufundat în PSET șapte este deja această sintaxă. 267 00:11:26,090 --> 00:11:28,980 Deci, în PSET șapte, dacă ați văzut sau nu a vazut-o încă, 268 00:11:28,980 --> 00:11:33,570 Știu că există un fișier care ne da ai sunat config.json-- JavaScript 269 00:11:33,570 --> 00:11:34,661 Object Notation. 270 00:11:34,661 --> 00:11:35,160 Ce? 271 00:11:35,160 --> 00:11:39,540 Am vrut să fie în măsură să vă furnizeze un șablon cu niște perechi cheie-valoare. 272 00:11:39,540 --> 00:11:44,290 Am vrut să fie în măsură să vă dau o listă gazdei, numele serverului. 273 00:11:44,290 --> 00:11:46,710 Am vrut să vă dau o substituent pentru numele de utilizator 274 00:11:46,710 --> 00:11:48,210 și un substituent pentru parola. 275 00:11:48,210 --> 00:11:49,410 Dacă nu vedeți acest lucru încă, nu vă faceți griji. 276 00:11:49,410 --> 00:11:51,340 Mai multe despre acest lucru în PSET șapte [? spec. ?] Si atunci, 277 00:11:51,340 --> 00:11:53,173 Evident, am doriți să completeze la-DOS 278 00:11:53,173 --> 00:11:55,310 pentru că atunci când vă conectați la CS50 IDE, fiecare dintre voi 279 00:11:55,310 --> 00:11:57,630 propriul nume de utilizator si parola. 280 00:11:57,630 --> 00:12:00,910 >> Deci am putea-am folosit o jumătate de duzină sau mai multe formate de fișiere diferite. 281 00:12:00,910 --> 00:12:02,940 Am fi putut folosi un fișier .txt. 282 00:12:02,940 --> 00:12:04,570 Am putea folosi un fișier CSV. 283 00:12:04,570 --> 00:12:06,745 Am putea-am folosit o Fișier INI, un fișier XML, 284 00:12:06,745 --> 00:12:09,370 o grămadă mai mult acronime care ar putea să nu fi auzit. 285 00:12:09,370 --> 00:12:11,244 Este un fel de arbitrară la sfarsitul zilei. 286 00:12:11,244 --> 00:12:16,030 Dar super-popular in aceste zile este un text format numit JSON-- JavaScript Object 287 00:12:16,030 --> 00:12:18,460 Notation-- care arata ca acest lucru. 288 00:12:18,460 --> 00:12:20,890 E un pic criptic, dar observa modelele. 289 00:12:20,890 --> 00:12:24,180 Începi cu un buclat deschisă bretele, si va termina cu aceeași. 290 00:12:24,180 --> 00:12:26,550 In interiorul, care este ceva. 291 00:12:26,550 --> 00:12:27,920 Este o pereche de chei-valoare. 292 00:12:27,920 --> 00:12:30,580 Deci acesta este un obiect care sunt uita la pe ecran aici 293 00:12:30,580 --> 00:12:33,690 care are o cheie, care are o valoare. 294 00:12:33,690 --> 00:12:37,610 Și deduce pe baza model anterior, ceea ce este cheia aici? 295 00:12:37,610 --> 00:12:39,790 Baza de date, de lucru pentru a în partea stângă a colonului. 296 00:12:39,790 --> 00:12:43,500 >> Acum, valoarea se întâmplă să fie o mai multe linii de data asta. 297 00:12:43,500 --> 00:12:46,760 Dar valoarea începe cu un buclat bretele și se termină cu o acoladă. 298 00:12:46,760 --> 00:12:49,480 Deci, ce ați propune este tip de valoarea bazei de date? 299 00:12:49,480 --> 00:12:52,160 300 00:12:52,160 --> 00:12:54,670 Un dicționar sau, pur și simplu mai mult succint, un obiect. 301 00:12:54,670 --> 00:12:55,170 Dreapta? 302 00:12:55,170 --> 00:13:00,010 Aceasta este un fel de o structură de date care pot utiliza alte structuri în sine. 303 00:13:00,010 --> 00:13:02,750 Deci, dacă toată chestia asta suntem de asteptare un object-- și un obiect 304 00:13:02,750 --> 00:13:07,101 este doar o adunatura de cheie-valoare pairs-- Valoarea de baze de date în sine este un obiect. 305 00:13:07,101 --> 00:13:10,350 Valoarea bazei de date are o grămadă de perechi de valori-cheie, dintre care primul 306 00:13:10,350 --> 00:13:13,130 este gazda, apoi numele, apoi numele de utilizator, parola apoi, 307 00:13:13,130 --> 00:13:17,550 fiecare dintre ale cărui valori, între timp, e doar un șir plictisitor în ghilimele duble. 308 00:13:17,550 --> 00:13:19,770 >> Deci, chiar dacă asta nu e Super Clear doar încă, 309 00:13:19,770 --> 00:13:22,740 știu că aceasta este doar o standard destul de plictisitor mod 310 00:13:22,740 --> 00:13:25,190 de stocare a datelor într-un format standard. 311 00:13:25,190 --> 00:13:27,700 Dar frecvente greseli te s-ar putea face, chiar în PSET șapte, 312 00:13:27,700 --> 00:13:32,120 sunt mici lucruri stupide, cum ar fi dacă ați omite accidental virgula acolo. 313 00:13:32,120 --> 00:13:34,900 Care va duce la fișierul nu neapărat fiind ușor de citit. 314 00:13:34,900 --> 00:13:38,191 Dacă omiteți accidental lucruri, cum ar fi citate, nu va fi ușor de citit. 315 00:13:38,191 --> 00:13:41,654 Deci, este un format de fișier destul de nitpicky, dar este una care e super-comun. 316 00:13:41,654 --> 00:13:44,820 Și se întâmplă să-l folosească, chiar dacă nu folosi orice JavaScript în caz contrar, 317 00:13:44,820 --> 00:13:46,330 în PSET șapte. 318 00:13:46,330 --> 00:13:46,860 >> In regula. 319 00:13:46,860 --> 00:13:48,110 Deci, amintiți-vă de această imagine. 320 00:13:48,110 --> 00:13:51,657 Am vorbit despre, în HTML, care codul ar putea arata ca aceasta. 321 00:13:51,657 --> 00:13:54,740 Aceasta este HyperText Markup Language [Inaudibil] pentru doar "salut, lume." 322 00:13:54,740 --> 00:13:57,570 Dar apoi ne-am propus o înapoi în timp ce în cazul în care aceasta ajută, 323 00:13:57,570 --> 00:14:00,210 ați putea dori să înceapă să se gândească despre acest lucru deja ca un copac. 324 00:14:00,210 --> 00:14:03,730 De fapt, indentare pe care le utiliza doar de dragul lui lizibilitate 325 00:14:03,730 --> 00:14:05,610 sau de dragul stilului pe stânga poate un fel de 326 00:14:05,610 --> 00:14:10,040 tradusă în acest copac, în cazul în care au unele nod special rădăcină că vom 327 00:14:10,040 --> 00:14:16,860 generic numit documentul, sub care este elementul HTML rădăcină sau tag-ul, HTML, 328 00:14:16,860 --> 00:14:19,980 care apoi are două copii, cap și corp. 329 00:14:19,980 --> 00:14:21,750 >> Și apoi, la rândul său, cap are un titlu. 330 00:14:21,750 --> 00:14:23,440 Și titlul are o valoare de text. 331 00:14:23,440 --> 00:14:26,130 Și corp are în mod similar o valoare text. 332 00:14:26,130 --> 00:14:29,220 Deci, dacă vrei să spui confortabil că da, ai putea lua această HTML 333 00:14:29,220 --> 00:14:32,080 și desena o imagine cum ar fi acest lucru, partea dreaptă 334 00:14:32,080 --> 00:14:35,910 este un model mental frumos, pentru că acum că avem JavaScript, o programare 335 00:14:35,910 --> 00:14:39,960 limbă pe care browsere pot executa și interpreta pentru tine, 336 00:14:39,960 --> 00:14:42,690 se dovedește că ceea ce suntem pe cale să facem în cod 337 00:14:42,690 --> 00:14:45,320 este începe să manipuleze acest structură de arbore în memorie. 338 00:14:45,320 --> 00:14:47,070 Nu avem de a construi copac în memorie. 339 00:14:47,070 --> 00:14:49,880 Noi nu trebuie să facem un fel de structură de date de cinci stil PSET 340 00:14:49,880 --> 00:14:50,650 complexitate. 341 00:14:50,650 --> 00:14:54,610 Browser-ul, destul de frumos, pe interpretare HTML sus în jos, 342 00:14:54,610 --> 00:14:58,600 stânga sau la dreapta, este literalmente va mână ne echivalentul unui pointer 343 00:14:58,600 --> 00:15:00,840 pentru că întregul copac gratis. 344 00:15:00,840 --> 00:15:02,150 Aceasta face toate munca grea. 345 00:15:02,150 --> 00:15:05,520 Asta e ceea ce Mozilla si Apple și au făcut alții pentru noi. 346 00:15:05,520 --> 00:15:09,400 >> Și cu JavaScript vom putea controla și de a schimba și de a face 347 00:15:09,400 --> 00:15:12,910 lucruri interesante la acel copac, altfel cunoscut 348 00:15:12,910 --> 00:15:15,880 ca un DOM sau Document Object Model. 349 00:15:15,880 --> 00:15:17,110 Ce fel de lucruri? 350 00:15:17,110 --> 00:15:19,030 Ei bine, se pare că în JavaScript, nu e 351 00:15:19,030 --> 00:15:22,800 această listă lungă de evenimente care pot avea loc. 352 00:15:22,800 --> 00:15:26,330 Și nu ne-am într-adevăr utilizate ca cuvânt de la săptămână la zero și PSET 353 00:15:26,330 --> 00:15:28,240 zero, atunci când am vorbit despre Scratch. 354 00:15:28,240 --> 00:15:31,390 Cele mai multe dintre voi, probabil, nu au utilizat un eveniment în proiectul dumneavoastră Scratch. 355 00:15:31,390 --> 00:15:33,850 Dar s-ar putea aminti tu simplu Marco Polo 356 00:15:33,850 --> 00:15:36,760 exemplu, în cazul în care am avut două sprites, dintre care unul a spus, Marco. 357 00:15:36,760 --> 00:15:40,180 Celălalt dintre care apoi, la ascultare și audierea acest caz, a declarat, Polo. 358 00:15:40,180 --> 00:15:42,080 Dacă nu, nu ezitați să privi înapoi atât de departe înapoi. 359 00:15:42,080 --> 00:15:44,450 >> Dar acest lucru este doar pentru a spun, și puteți fel de 360 00:15:44,450 --> 00:15:47,730 deduce din numele acestor lucruri, JavaScript, se pare, 361 00:15:47,730 --> 00:15:53,200 este de gând să ne dea o modalitate de a asculta pentru mouse-ul merge în jos sau mouse-ul merge în sus 362 00:15:53,200 --> 00:15:57,920 sau merge în jos tasta sau tasta merge în sus sau onselect onsubmit 363 00:15:57,920 --> 00:15:59,740 sau onresizing ceva. 364 00:15:59,740 --> 00:16:03,060 Cu alte cuvinte, orice acțiune fizică că un om poate lua cu un browser 365 00:16:03,060 --> 00:16:08,210 pe care le face în fiecare zi, puteți scrie codul pentru că ascultă de aceste evenimente 366 00:16:08,210 --> 00:16:10,220 și apoi face ceva adecvat. 367 00:16:10,220 --> 00:16:14,130 >> De exemplu, dacă utilizați Google Maps, ce se întâmplă dacă faceți clic și mutare 368 00:16:14,130 --> 00:16:16,250 mouse-ul, de obicei? 369 00:16:16,250 --> 00:16:17,758 Dacă faceți clic și glisați? 370 00:16:17,758 --> 00:16:18,258 Da? 371 00:16:18,258 --> 00:16:21,701 372 00:16:21,701 --> 00:16:22,200 Exact. 373 00:16:22,200 --> 00:16:23,159 Harta începe să se miște. 374 00:16:23,159 --> 00:16:25,616 Deci, puteți vedea un fel de ceea ce este aici, ceea ce e acolo. 375 00:16:25,616 --> 00:16:27,130 Și cum să pună în aplicare Google asta? 376 00:16:27,130 --> 00:16:29,421 Ei bine, probabil, sunt folosind o pereche de acestea eveniment 377 00:16:29,421 --> 00:16:31,720 ascultători, una care spune, ascultați pe mouse-ul 378 00:16:31,720 --> 00:16:35,410 down-- astfel încât atunci când utilizatorul fizic împinge trackpad lui sau sau sa mouse-ul ei 379 00:16:35,410 --> 00:16:36,010 jos. 380 00:16:36,010 --> 00:16:38,350 Și apoi căutăm ceva de genul mișcare 381 00:16:38,350 --> 00:16:41,145 sau alte evenimente care ne permite pentru a captura trageți. 382 00:16:41,145 --> 00:16:45,910 Și, de fapt, este la fel de trageți în acest dot dot dot Lista de opțiuni posibile. 383 00:16:45,910 --> 00:16:49,140 >> Deci, acest lucru va fi un puternic modalitate de a începe să răspundă la utilizator 384 00:16:49,140 --> 00:16:52,824 chiar înainte de a face clic de fapt ceva explicit ca prezenta. 385 00:16:52,824 --> 00:16:55,240 Dar vom să introducă câteva subiecte pentru a ajunge acolo. 386 00:16:55,240 --> 00:16:58,570 Dar, mai întâi, să tranziție la un cod actuale. 387 00:16:58,570 --> 00:17:01,450 Deci, am de gând să merg înainte și deschide-dom 0, 388 00:17:01,450 --> 00:17:05,869 care este un exemplu foarte simplu aici că, dacă am mări pur și simplu 389 00:17:05,869 --> 00:17:08,500 are această intrare aici pentru mine. 390 00:17:08,500 --> 00:17:12,410 Și am de gând să mergeți mai departe și tastați "David" pentru numele meu și faceți clic pe Trimiteți. 391 00:17:12,410 --> 00:17:17,940 >> Și apoi, chiar dacă un fel de ieftin, am au acest prompt care apare care spune, 392 00:17:17,940 --> 00:17:19,244 "Bună ziua, David!" 393 00:17:19,244 --> 00:17:21,740 Deci acest este un fel de ca nostru "Bună ziua, lume" 394 00:17:21,740 --> 00:17:25,150 că am făcut un timp înapoi în C și chiar și în PHP pentru că am dinamic 395 00:17:25,150 --> 00:17:26,310 scoasă numele meu. 396 00:17:26,310 --> 00:17:28,230 Pot să fac numele altcuiva aici. 397 00:17:28,230 --> 00:17:31,240 Aș putea schimba pur și simplu acest lucru, cum ar fi, Hannah, faceți clic pe Submit. 398 00:17:31,240 --> 00:17:33,780 Și într-adevăr, micile schimbări pop-up. 399 00:17:33,780 --> 00:17:36,650 >> Acum, pop-up-uri sunt unul dintre cele mai multe caracteristici ale abuzat web. 400 00:17:36,650 --> 00:17:38,520 Și, de fapt, din nou în zilei blocante pop-up 401 00:17:38,520 --> 00:17:40,820 a intrat în modă pentru că ar merge la unele website-- 402 00:17:40,820 --> 00:17:43,604 probabil, o place-- discutabil care ar apoi brusc 403 00:17:43,604 --> 00:17:46,020 începe peppering ecran cu o grămadă de pop-up-uri. 404 00:17:46,020 --> 00:17:49,700 Și așa mai departe această capacitate de a pop-up ferestre în fața a utilizatorului 405 00:17:49,700 --> 00:17:52,372 nu a fost deosebit de bine primit de către umanitate. 406 00:17:52,372 --> 00:17:54,080 Deci, de aceea ai vedea acest lucru a preveni, 407 00:17:54,080 --> 00:17:55,706 care tocmai face chestia asta urâtă. 408 00:17:55,706 --> 00:17:57,996 Deci vom avea nevoie de o modalitate mai bună de a solicita utilizatorului. 409 00:17:57,996 --> 00:17:59,350 Dar pentru acum, care pare să funcționeze. 410 00:17:59,350 --> 00:18:03,320 Deci, doar intuitiv, ceea ce pare să se întâmple aici? 411 00:18:03,320 --> 00:18:07,870 Am merge mai departe și faceți clic pe Trimite, și apoi ceva se întâmplă, în mod clar. 412 00:18:07,870 --> 00:18:12,870 Dar ceea ce nu se întâmplă asta sa întâmplat săptămâna trecută în orice moment am apasat Trimite? 413 00:18:12,870 --> 00:18:15,940 Ceea ce nu sa întâmplat pe ecran? 414 00:18:15,940 --> 00:18:17,170 Ne pare rău? 415 00:18:17,170 --> 00:18:18,010 Reîncarcă. 416 00:18:18,010 --> 00:18:19,720 URL-ul nu sa schimbat deloc. 417 00:18:19,720 --> 00:18:22,250 I-am spus acest lucru a fost-dom 0, și eu sunt încă la-Dom 0. 418 00:18:22,250 --> 00:18:26,890 În mod normal, ne-ar lua schimbat la un alt URL, cum ar fi register.php sau altele asemenea. 419 00:18:26,890 --> 00:18:29,560 >> Dar chiar și atunci când am respingerea acest lucru făcând clic pe OK, 420 00:18:29,560 --> 00:18:32,310 observați că URL-ul rămâne complet pus. 421 00:18:32,310 --> 00:18:35,350 Și, de fapt, dacă sunt un pic sceptic, lasă-mă să deschid Chrome. 422 00:18:35,350 --> 00:18:36,860 Lasă-mă să deschid fila Rețea. 423 00:18:36,860 --> 00:18:38,360 Și observați că e gol în acest moment. 424 00:18:38,360 --> 00:18:40,700 Lasă-mă să merg mai departe și retrimiteți Maria. 425 00:18:40,700 --> 00:18:42,810 Nu e nici un fel de trafic de rețea. 426 00:18:42,810 --> 00:18:44,320 Deci nu e nici HTTP. 427 00:18:44,320 --> 00:18:47,620 >> Deci, într-adevăr, dacă mă uit la codul sursă pentru asta: lasă-mă închide această fereastră 428 00:18:47,620 --> 00:18:49,480 și du-te la Vezi sursa. 429 00:18:49,480 --> 00:18:50,400 Interesant. 430 00:18:50,400 --> 00:18:53,520 Se pare că există unele noi tag-uri, printre care script-ul. 431 00:18:53,520 --> 00:18:57,490 Deci, haideți să aruncăm o privire în CS50 IDE exact ceea ce am trimis utilizatorului. 432 00:18:57,490 --> 00:19:00,690 >> Deci, aici este-- să se concentreze pe doar HTML. 433 00:19:00,690 --> 00:19:03,500 Aici e jumătatea de jos a dom-0.html. 434 00:19:03,500 --> 00:19:07,830 Și observați că acesta are un titlu, o etichetă cap, un tag corp, o etichetă formular. 435 00:19:07,830 --> 00:19:11,257 Dar ce sare la tine, ca diferit, mai ales dacă nu ați mai 436 00:19:11,257 --> 00:19:12,590 scris orice JavaScript-te. 437 00:19:12,590 --> 00:19:14,920 Permiteți-mi să derulați un pic la dreapta aici. 438 00:19:14,920 --> 00:19:18,330 Am o intrare, o altă intrare pentru prezenta. 439 00:19:18,330 --> 00:19:21,410 Am o identitate, care este un fel de nou. 440 00:19:21,410 --> 00:19:22,790 Dar noi am văzut acest lucru cu CSS. 441 00:19:22,790 --> 00:19:24,480 Ce altceva este cu siguranta nou? 442 00:19:24,480 --> 00:19:24,980 Da? 443 00:19:24,980 --> 00:19:30,580 444 00:19:30,580 --> 00:19:32,140 Nisa. 445 00:19:32,140 --> 00:19:32,760 >> In regula. 446 00:19:32,760 --> 00:19:35,630 Deci, în cazul în care se spune onsubmit, observa ceea ce pare să urmeze. 447 00:19:35,630 --> 00:19:38,740 Aceasta este un atribut în nomenclatura HTML. 448 00:19:38,740 --> 00:19:40,944 Valoarea sa este acest șir citat aici. 449 00:19:40,944 --> 00:19:42,860 Și acest lucru pare un pic ciudat la prima vedere. 450 00:19:42,860 --> 00:19:44,050 Nu e HTML. 451 00:19:44,050 --> 00:19:45,240 Nu e CSS. 452 00:19:45,240 --> 00:19:47,580 Acest lucru este, după cum s-ar putea ghici, JavaScript. 453 00:19:47,580 --> 00:19:51,850 Deci, se pare că a construit în această pagină web este o funcție numită salut. 454 00:19:51,850 --> 00:19:54,250 Și eu care tocmai deducere pentru că este un cuvânt, salut. 455 00:19:54,250 --> 00:19:55,880 Are o paren deschis, paren apropiate, punct și virgulă. 456 00:19:55,880 --> 00:19:58,095 Se pare ca o funcție C, arata ca o funcție PHP. 457 00:19:58,095 --> 00:20:00,370 >> Și într-adevăr, o să o funcție JavaScript. 458 00:20:00,370 --> 00:20:01,440 Apoi am întorc false. 459 00:20:01,440 --> 00:20:03,440 Ne vom întoarce la că într-o clipă. 460 00:20:03,440 --> 00:20:05,320 Dar în cazul în care este definit această funcție? 461 00:20:05,320 --> 00:20:07,950 Ei bine, lasă-mă să derulați în sus în partea de sus a fișierului. 462 00:20:07,950 --> 00:20:11,710 Și chiar dacă este o linie lungă, e relativ simplu. 463 00:20:11,710 --> 00:20:15,000 Lasă-mă să zoom out aici și se concentreze pe aceste patru linii. 464 00:20:15,000 --> 00:20:17,137 >> Deci, în JavaScript, doar ca PHP, doar 465 00:20:17,137 --> 00:20:19,720 să zicem, literal, cuvântul "funcția" numele funcției, 466 00:20:19,720 --> 00:20:22,700 și apoi paranteze cu orice arguments-- nici un argument în acest caz. 467 00:20:22,700 --> 00:20:25,290 Și nu există nici un tip de întoarcere în JavaScript, la fel ca PHP. 468 00:20:25,290 --> 00:20:29,470 Deci, este un pic mai flexibile decât C. Deschis bretele cret, aproape bretele buclat. 469 00:20:29,470 --> 00:20:33,270 Construit în JavaScript este un function-- Nu o function-- recomandat 470 00:20:33,270 --> 00:20:35,730 dar o funcție numită de alertă al cărei unic scop în viață 471 00:20:35,730 --> 00:20:38,620 este de a trage în sus, care destul de urât solicita ca am vazut acum un moment. 472 00:20:38,620 --> 00:20:40,950 >> Acum, acest lucru este un fel de o îmbucătură. 473 00:20:40,950 --> 00:20:42,560 Ce se petrece aici? 474 00:20:42,560 --> 00:20:45,840 Așa că haideți să începem să evidenția totul aici. 475 00:20:45,840 --> 00:20:48,540 Asta e același argument pentru a alerta. 476 00:20:48,540 --> 00:20:49,530 Și ce se întâmplă? 477 00:20:49,530 --> 00:20:51,200 Acest lucru doar arată ca un șir. 478 00:20:51,200 --> 00:20:59,180 Și se pare că, spre deosebire de PHP și spre deosebire de C, nu contează în JavaScript 479 00:20:59,180 --> 00:21:01,090 Dacă voi ghilimele simple sau ghilimele. 480 00:21:01,090 --> 00:21:02,060 Vor fi echivalent. 481 00:21:02,060 --> 00:21:03,769 Și sincer, e doar popular in aceste zile 482 00:21:03,769 --> 00:21:06,726 pentru programatori JavaScript pentru totdeauna Folosiți ghilimele simple pentru un motiv oarecare. 483 00:21:06,726 --> 00:21:07,840 E doar un lucru de făcut. 484 00:21:07,840 --> 00:21:09,710 Dar am putea folosi ghilimele, de asemenea. 485 00:21:09,710 --> 00:21:11,540 >> Deci, plus este un nou personaj. 486 00:21:11,540 --> 00:21:14,512 Dar cei dintre voi care ați făcut acest lucru înainte, ceea ce nu înseamnă plus? 487 00:21:14,512 --> 00:21:16,440 Da. 488 00:21:16,440 --> 00:21:17,120 Înlănțui. 489 00:21:17,120 --> 00:21:18,570 Așa că am văzut acest lucru în PHP. 490 00:21:18,570 --> 00:21:20,315 Nu e doar punctul Operatorul în PHP care 491 00:21:20,315 --> 00:21:22,000 va concatena două șiruri împreună. 492 00:21:22,000 --> 00:21:24,000 C a fost o durere în gât pentru a face acest lucru. 493 00:21:24,000 --> 00:21:27,310 Reamintim de la PSET șase, care a fost o durere special în gât, 494 00:21:27,310 --> 00:21:29,470 va trebui să utilizați ceva de genul strcat 495 00:21:29,470 --> 00:21:31,660 după alocarea de memorie pe stiva sau heap. 496 00:21:31,660 --> 00:21:34,243 Trebuia să sară prin cercuri doar pentru a concatena două șiruri. 497 00:21:34,243 --> 00:21:36,040 În JavaScript, este foarte simplu. 498 00:21:36,040 --> 00:21:38,030 Doar folosi operatorul plus între ele. 499 00:21:38,030 --> 00:21:41,420 >> Deci complexul cu aspect lucru pare a fi acest 500 00:21:41,420 --> 00:21:43,490 deoarece la sfârșitul tot acest șir, eu doar 501 00:21:43,490 --> 00:21:45,797 înlănțui pe un semn de exclamare. 502 00:21:45,797 --> 00:21:48,380 Deci, dacă ceea ce a fost popping sus a fost "Bună ziua, David", "Bună ziua, Hannah," 503 00:21:48,380 --> 00:21:52,740 "Bună ziua, Maria", și așa mai departe, în mod clar chestia aia de mijloc intre cele doua 504 00:21:52,740 --> 00:21:55,215 plusuri să-mi dea acces la ceea ce? 505 00:21:55,215 --> 00:21:58,855 506 00:21:58,855 --> 00:22:01,991 Ce e acolo pentru sigur? 507 00:22:01,991 --> 00:22:02,490 Da. 508 00:22:02,490 --> 00:22:05,090 Așa că vom pretinde aici răspunde numele lor, nu? 509 00:22:05,090 --> 00:22:10,380 Deci, numele lor a apărut în finală rezultat. Deci, ce înseamnă asta? 510 00:22:10,380 --> 00:22:15,080 Ei bine, am propus mai devreme în imagine care așa-numita DOM 511 00:22:15,080 --> 00:22:18,580 are acest element special rădăcină drumul până sus numit documentul. 512 00:22:18,580 --> 00:22:21,660 Și acum, se pare, că se întâmplă să fie o variabilă globală special 513 00:22:21,660 --> 00:22:25,250 în JavaScript, construit în care este o grămadă de funcționalitate utilă. 514 00:22:25,250 --> 00:22:31,770 Printre funcționalitatea utilă este capacitatea de a ajunge la orice nod descendent. 515 00:22:31,770 --> 00:22:37,760 Aceste pătrată sau dreptunghiulară sau elipse sunt doar noduri într-un copac, ca să spunem așa. 516 00:22:37,760 --> 00:22:41,850 >> Deci, se dovedește că construit în Obiect Document JavaScript lui 517 00:22:41,850 --> 00:22:47,300 este o funcție, altfel cunoscut ca un metoda, care se numește getElementById. 518 00:22:47,300 --> 00:22:50,410 Sintaxa pentru apelarea o funcție în JavaScript 519 00:22:50,410 --> 00:22:55,220 care este în interiorul unui obiect sau a unei variabilă este doar cu notația punct. 520 00:22:55,220 --> 00:22:57,950 Și am văzut acest lucru în C ceea ce sintaxa struct. 521 00:22:57,950 --> 00:23:03,530 Veți vedea acest lucru în PSET șapte, un fel de, un fel de, când vezi CS50 :: interogare. 522 00:23:03,530 --> 00:23:08,070 Colon colon în PHP este un alt mod de asteptare o funcție care este 523 00:23:08,070 --> 00:23:09,260 interiorul un obiect. 524 00:23:09,260 --> 00:23:11,960 >> Dar pentru acum, în JavaScript, e doar un punct. 525 00:23:11,960 --> 00:23:14,170 Și astfel această funcție, destul de frumos, un fel de 526 00:23:14,170 --> 00:23:16,810 spune ceea ce does-- obține elementul de identitate. 527 00:23:16,810 --> 00:23:20,280 Un element este doar un alt nume pentru o etichetă sau nod în DOM. 528 00:23:20,280 --> 00:23:26,900 Și asa ca element de ID "name" înseamnă asta: aici e HTML mea. 529 00:23:26,900 --> 00:23:31,910 Și se bazează pe acest HTML, ceea ce nod sau ce tag-ul HTML sunt eu 530 00:23:31,910 --> 00:23:35,097 O să fie programatic mână prin apel la document.getElementById? 531 00:23:35,097 --> 00:23:37,650 532 00:23:37,650 --> 00:23:38,500 >> Da, exact. 533 00:23:38,500 --> 00:23:42,670 Mă duc pentru a obține de intrare Element există, acesta este ID-ul "name". 534 00:23:42,670 --> 00:23:45,140 Deci în mod special, puteți cred că de această funcție, 535 00:23:45,140 --> 00:23:49,560 getElementById, ca o modalitate de a da înapoi un pointer la acel nod specific 536 00:23:49,560 --> 00:23:50,060 în copac. 537 00:23:50,060 --> 00:23:51,980 Noi nu am desenat acest copac, dar este un mod 538 00:23:51,980 --> 00:23:54,900 de a avea acces la acea dreptunghi sau dreptunghi care 539 00:23:54,900 --> 00:23:58,090 prin aceasta identificarea în mod unic prin ID-ul său. 540 00:23:58,090 --> 00:23:59,760 >> Acum, de ce este acest lucru util? 541 00:23:59,760 --> 00:24:01,510 Ei bine, se pare că că, odată ce ați ajuns 542 00:24:01,510 --> 00:24:07,220 acel nod, acest dreptunghi de la imagine, ca nod în interiorul acestuia, 543 00:24:07,220 --> 00:24:10,660 la rândul său, are o grămadă de perechi cheie-valoare properties-- 544 00:24:10,660 --> 00:24:13,480 sau date, dintre care unul este numit valoare. 545 00:24:13,480 --> 00:24:16,500 Deci literal, e un fel de îmbucătură pentru a explica totul. 546 00:24:16,500 --> 00:24:19,370 Dar la sfârșitul zilei, Toate acestea nu este să vă dau 547 00:24:19,370 --> 00:24:23,070 un șir care utilizatorul tastat în acest mod ierarhic. 548 00:24:23,070 --> 00:24:24,820 Dar nu-mi place o câteva dintre aceste lucruri. 549 00:24:24,820 --> 00:24:27,590 Sau, mai degrabă, există unele curiozitate încă. 550 00:24:27,590 --> 00:24:28,870 Toate acestea păreau să funcționeze. 551 00:24:28,870 --> 00:24:33,420 De ce crezi că m-am întors fals după apel salut? 552 00:24:33,420 --> 00:24:35,910 Aceasta arată un pic urât, că Am două declarații acolo 553 00:24:35,910 --> 00:24:38,730 separate prin punct și virgulă. 554 00:24:38,730 --> 00:24:39,310 Ghiceste. 555 00:24:39,310 --> 00:24:44,390 Dacă am scos return false, ceea ce s-ar putea întâmpla, doar instinctiv? 556 00:24:44,390 --> 00:24:46,990 557 00:24:46,990 --> 00:24:49,460 Ne pare rău, spun din nou? 558 00:24:49,460 --> 00:24:50,530 >> Deschide o grămadă de Windows. 559 00:24:50,530 --> 00:24:52,780 Deci, potențial, poate ceva așa se va întâmpla. 560 00:24:52,780 --> 00:24:54,422 Ce altceva? 561 00:24:54,422 --> 00:24:55,630 S-ar putea depune o cerere în cazul în care? 562 00:24:55,630 --> 00:24:59,109 563 00:24:59,109 --> 00:25:00,510 La aceeași pagină. 564 00:25:00,510 --> 00:25:03,110 Deci, de fapt, că e mai aproape răspunde aici, 565 00:25:03,110 --> 00:25:05,890 chiar dacă, spre deosebire de în trecut, nu am 566 00:25:05,890 --> 00:25:09,300 specificat atributul de acțiune, care in mod normal trebuie să facem. 567 00:25:09,300 --> 00:25:11,780 Se pare că există o implicit. Dacă nu specificați o acțiune, 568 00:25:11,780 --> 00:25:15,370 e ca si cum spune citatul, citatul sau numele fișierului în sine, 569 00:25:15,370 --> 00:25:17,850 care, în acest caz, ar fie ca dom-0.html. 570 00:25:17,850 --> 00:25:20,420 E doar un fel de a dedus, sau mai degrabă implicite. 571 00:25:20,420 --> 00:25:22,420 >> Și așa, dacă nu fac acest lucru, să observăm. 572 00:25:22,420 --> 00:25:23,230 Lasă-mă să salveze acest. 573 00:25:23,230 --> 00:25:25,270 Și am scos return false. 574 00:25:25,270 --> 00:25:27,759 Lasă-mă să mă întorc la acest exemplu și vigoare, reîncărcați. 575 00:25:27,759 --> 00:25:30,800 Și s-ar putea fi văzut-mi sugereze acest lucru pe CS50 Discuta o grămadă de ori. 576 00:25:30,800 --> 00:25:34,560 Dacă ceva e vreodată acționează funky, și Browser-ul nu comportă cum vă așteptați, 577 00:25:34,560 --> 00:25:37,410 de multe ori veți dori să dețină Shift și apoi faceți clic pe Reîncărcare. 578 00:25:37,410 --> 00:25:41,480 Care va forța fiecare fișier pentru a reîncărca și nu utilizați cache-ul browser-ului dvs. locală 579 00:25:41,480 --> 00:25:47,032 sau copie, astfel că acum, lasă-mă să merg mai departe și deschide Inspector mea, pe fila Rețea. 580 00:25:47,032 --> 00:25:48,740 Am de gând să faceți clic pe Păstra Log pentru că am 581 00:25:48,740 --> 00:25:51,660 Nu vreau să ștergeți rânduri odată ce am lua whisked departe în altă parte. 582 00:25:51,660 --> 00:25:54,650 >> Lasă-mă să merg mai departe și aici tip în Andi, faceți clic pe Submit. 583 00:25:54,650 --> 00:25:55,150 In regula. 584 00:25:55,150 --> 00:25:56,480 Care pare cum era de așteptat. 585 00:25:56,480 --> 00:25:57,440 Se spune "Hello, Andi." 586 00:25:57,440 --> 00:25:59,420 Lasă-mă să faceți clic pe OK. 587 00:25:59,420 --> 00:26:00,610 Interesant. 588 00:26:00,610 --> 00:26:05,100 Observați că pagina sa schimbat, deși la pagina originală. 589 00:26:05,100 --> 00:26:06,770 Observați ce fel de URL schimbat. 590 00:26:06,770 --> 00:26:09,430 A adăugat un semn de întrebare, care este de obicei un indicator 591 00:26:09,430 --> 00:26:11,260 pe care am încercat să-și prezinte ceva. 592 00:26:11,260 --> 00:26:13,570 Și apoi la partea de jos, chiar mai explicit, 593 00:26:13,570 --> 00:26:17,570 aici este cererea reală HTTP, care a primit un răspuns de 200 care 594 00:26:17,570 --> 00:26:18,490 ma adus înapoi aici. 595 00:26:18,490 --> 00:26:20,250 >> Deci, acest lucru nu este ceea ce vrem să facem, nu? 596 00:26:20,250 --> 00:26:22,166 Pentru ca nu vreau reîncărcați întreaga pagină. 597 00:26:22,166 --> 00:26:24,970 Am vrut în schimb să se întoarcă fals astfel încât să se scurt-circuit 598 00:26:24,970 --> 00:26:28,840 comportament implicit a browser-ului, care a fost, desigur, să prezinte pagina. 599 00:26:28,840 --> 00:26:31,700 >> Deci, haideți să aruncăm o privire la o marginal mai bine exemplu. 600 00:26:31,700 --> 00:26:33,920 Aceasta este versiunea dom unul. 601 00:26:33,920 --> 00:26:36,680 Și observați următoarele. 602 00:26:36,680 --> 00:26:39,150 E în regulă, dacă nu Grok toate liniile de cod. 603 00:26:39,150 --> 00:26:41,750 Dar ceea ce este fundamental diferit despre această punere în aplicare? 604 00:26:41,750 --> 00:26:44,690 Voi stipulează că se comporta in aceeași, face același lucru. 605 00:26:44,690 --> 00:26:49,320 606 00:26:49,320 --> 00:26:51,570 Ce-am făcut, evident, diferit? 607 00:26:51,570 --> 00:26:52,266 Da? 608 00:26:52,266 --> 00:26:53,182 >> Audiența: [neauzit]. 609 00:26:53,182 --> 00:27:03,421 610 00:27:03,421 --> 00:27:04,170 DAVID MALAN: Da. 611 00:27:04,170 --> 00:27:08,620 Deci, funcția este definită differently-- Cu alte cuvinte, absente de la forma, 612 00:27:08,620 --> 00:27:13,180 acolo on-line 7-- sau mai degrabă, linia 8-- nu mai 613 00:27:13,180 --> 00:27:15,070 nu am atributul onsubmit. 614 00:27:15,070 --> 00:27:16,750 În exemplul anterior, am avut asta. 615 00:27:16,750 --> 00:27:18,530 Și apoi am scris literalmente codul meu aici. 616 00:27:18,530 --> 00:27:20,210 Și apoi i-am spus return false. 617 00:27:20,210 --> 00:27:22,180 Și dacă nu freca te pe un drum greșit încă, 618 00:27:22,180 --> 00:27:26,140 aceasta ar trebui să înceapă să măsura ca, la fel ca și în HTML, 619 00:27:26,140 --> 00:27:29,530 când am început să-l amesteca co- cu CSS în atributele de stil, 620 00:27:29,530 --> 00:27:32,890 doar a început pentru a obține un pic murdar sau se simt un pic greșit. 621 00:27:32,890 --> 00:27:35,020 >> În mod similar aici, în cazul în care a începe să luați HTML, 622 00:27:35,020 --> 00:27:37,419 și apoi în mod automat plop unele cod JavaScript 623 00:27:37,419 --> 00:27:40,460 în mijlocul unui șir citat, e Nu va fi foarte întreținut. 624 00:27:40,460 --> 00:27:40,630 Dreapta? 625 00:27:40,630 --> 00:27:43,690 Nici măcar nu e evident de la prima locul în care codul JavaScript este. 626 00:27:43,690 --> 00:27:46,590 Deci, ar fi foarte frumos ca un principiu de design mai bun, 627 00:27:46,590 --> 00:27:50,500 să păstreze HTML nostru complet separat de JavaScript nostru. 628 00:27:50,500 --> 00:27:53,150 >> Deci, pentru a face acest lucru, ceea ce am face aici este following-- 629 00:27:53,150 --> 00:27:56,790 Pur și simplu folosi HTML doar pentru marcare. 630 00:27:56,790 --> 00:28:00,730 Și astfel, în versiunea una din asta, Am este o formă cu un ID unic. 631 00:28:00,730 --> 00:28:04,630 Și apoi aici, am profitând de o funcție specială de JavaScript 632 00:28:04,630 --> 00:28:08,480 prin care pot avea ceea ce este numit o funcție anonim. 633 00:28:08,480 --> 00:28:14,150 Deci, se dovedește că, dacă eu numesc document.getElementById de "demo" 634 00:28:14,150 --> 00:28:18,890 asta e ca să-mi dea un pointer la acest nod în copacul meu, elementul forma, 635 00:28:18,890 --> 00:28:20,100 ca sa zic asa. 636 00:28:20,100 --> 00:28:22,220 >> Acum, eu știu doar de la știind un pic de HTML 637 00:28:22,220 --> 00:28:26,330 acum avem citit unele on-line referință, că un element de formă suportă 638 00:28:26,330 --> 00:28:29,950 o grămadă de listeners-- eveniment în Cu alte cuvinte, lista de rufe de eveniment 639 00:28:29,950 --> 00:28:31,700 ascultătorii care le-am văzut în urmă cu o clipă. 640 00:28:31,700 --> 00:28:35,950 Știu de la citirea documentației că onsubmit este un eveniment valabil 641 00:28:35,950 --> 00:28:38,520 ascultător pentru un element de formular. 642 00:28:38,520 --> 00:28:41,480 >> Deci, odată ce știu că, este sigur pentru mine să fac 643 00:28:41,480 --> 00:28:45,390 following-- GET acel nod din copac, elementul forma, 644 00:28:45,390 --> 00:28:48,070 și accesul său așa-numitele proprietate onsubmit. 645 00:28:48,070 --> 00:28:49,880 Deci punctul înseamnă doar Aceasta este o proprietate, 646 00:28:49,880 --> 00:28:52,180 ca o valoare specială în interiorul de el. 647 00:28:52,180 --> 00:28:55,590 Și ce tip de date sunt eu atribuirea, aparent, 648 00:28:55,590 --> 00:28:58,900 la onSubmit, care este în mod eficient o variabilă în interiorul 649 00:28:58,900 --> 00:29:01,010 de care nod în arborele? 650 00:29:01,010 --> 00:29:04,100 Este un domeniu în interiorul că struct. 651 00:29:04,100 --> 00:29:05,810 Care este tipul de date? 652 00:29:05,810 --> 00:29:07,030 >> O funcție, da. 653 00:29:07,030 --> 00:29:08,607 Deci, se dovedește că PHP are acest lucru. 654 00:29:08,607 --> 00:29:10,440 Și chiar dacă ne-am nu vă spun despre ea, 655 00:29:10,440 --> 00:29:16,240 C are, de asemenea, funcția de indicii, de capacitatea de a trece și de a atribui funcții 656 00:29:16,240 --> 00:29:18,330 ca valori variabile "în sine. 657 00:29:18,330 --> 00:29:20,280 Și nu mergem de a regresa înapoi la C. 658 00:29:20,280 --> 00:29:23,250 Dar pentru acum, se pare că pe partea dreaptă aici, 659 00:29:23,250 --> 00:29:26,260 chiar dacă pare un pic înfricoșat, acest lucru înseamnă, hei browser, 660 00:29:26,260 --> 00:29:27,550 da-mi o funcție. 661 00:29:27,550 --> 00:29:30,560 Eu nu am de gând să deranjeze chiar da un nume pentru că eu sunt literalmente 662 00:29:30,560 --> 00:29:34,450 O să atribui să-i zicem adresa acestei funcții 663 00:29:34,450 --> 00:29:35,994 imediat la onsubmit. 664 00:29:35,994 --> 00:29:39,160 Cu alte cuvinte, browser-ul, nu aveți nevoie să știu ce această funcție se numește. 665 00:29:39,160 --> 00:29:41,890 Trebuie doar să știi atunci când este în memorie. 666 00:29:41,890 --> 00:29:44,210 Și așa este suficient doar pentru a au un semn de egalitate acolo 667 00:29:44,210 --> 00:29:48,240 și să nu deranjeze denumire acest lucru, cum ar fi foo sau saluta sau orice alt cuvânt. 668 00:29:48,240 --> 00:29:50,150 Iar acum acest lucru este doar un lucru stilistică. 669 00:29:50,150 --> 00:29:53,100 Am putea muta acest bretele ondulat pe the-- sorry-- linia următoare 670 00:29:53,100 --> 00:29:54,750 ca și cum am face de obicei CS50. 671 00:29:54,750 --> 00:29:57,550 Dar, în JavaScript, e de fapt stilistic comun 672 00:29:57,550 --> 00:30:00,450 pentru a păstra doar bretele buclat, The Primul, pe care prima linie. 673 00:30:00,450 --> 00:30:02,620 >> Dar în continuare, nu e nimic interesant. 674 00:30:02,620 --> 00:30:05,830 Că bretele buclat deschis doar delimitează începutul funcția mea. 675 00:30:05,830 --> 00:30:09,320 Funcția este acum identice, cu excepția Am 676 00:30:09,320 --> 00:30:11,452 incluse fals retur în interiorul acestei funcții. 677 00:30:11,452 --> 00:30:13,160 Pentru că se pare out-- și v-ar numai 678 00:30:13,160 --> 00:30:14,980 știu acest lucru de la lectură documentation-- 679 00:30:14,980 --> 00:30:19,740 că în cazul în care funcția pe care ați atribui la handler onsubmit întoarce false, 680 00:30:19,740 --> 00:30:23,420 browser-ul doar știe și este de acord nu depune formularul la un server. 681 00:30:23,420 --> 00:30:27,210 În cazul în care returnează adevărat, va prezenta l la un server din motive vom vedea 682 00:30:27,210 --> 00:30:28,700 sunt utile într-o clipă. 683 00:30:28,700 --> 00:30:31,000 >> Și apoi după virgulă bretele buclat acolo doar 684 00:30:31,000 --> 00:30:32,541 înseamnă Am terminat definirea funcției. 685 00:30:32,541 --> 00:30:36,600 Știi ce a apela cât mai curând ca auzi o prezentare. 686 00:30:36,600 --> 00:30:37,100 In regula. 687 00:30:37,100 --> 00:30:40,650 Acest lucru este încă probabil un fel de urât. 688 00:30:40,650 --> 00:30:42,190 Deci, ce mai putem face? 689 00:30:42,190 --> 00:30:45,000 >> Ei bine, se pare, apoi în Versiunea doua, care este last-- 690 00:30:45,000 --> 00:30:46,780 Și vom tocmai privire la acest lucru. 691 00:30:46,780 --> 00:30:49,850 Cu riscul de a face o mai urat, se dovedește 692 00:30:49,850 --> 00:30:52,160 că există o bibliotecă în lumea numit jQuery. 693 00:30:52,160 --> 00:30:54,900 Și jQuery este un super populare bibliotecă JavaScript 694 00:30:54,900 --> 00:30:57,930 care este atat de popular ca cele mai multe orice JavaScript-- nu e 695 00:30:57,930 --> 00:31:00,540 mai puțin frecvente pentru oameni de a confunda jQuery cu JavaScript. 696 00:31:00,540 --> 00:31:01,070 Ce? 697 00:31:01,070 --> 00:31:04,990 JavaScript în sine are foarte modalități de a face lucruri-- verbose 698 00:31:04,990 --> 00:31:07,820 document.getElementById, dadadadadada. 699 00:31:07,820 --> 00:31:10,510 Ajungi cu foarte linii lungi de cod. 700 00:31:10,510 --> 00:31:15,550 >> Deci, un tip pe nume John Resid, care lucrează de fapt pentru o pornire 701 00:31:15,550 --> 00:31:18,630 în aceste zile, a ieșit cu această bibliotecă de ani 702 00:31:18,630 --> 00:31:22,070 Acum că mulți oameni au contribuit a numit jQuery care schimbă 703 00:31:22,070 --> 00:31:23,449 sintaxa în felul următor. 704 00:31:23,449 --> 00:31:25,740 Și așa ați văzut acest lucru, pentru că veți invariabil 705 00:31:25,740 --> 00:31:28,140 aceasta în cazul în care face un proiect final web-based, 706 00:31:28,140 --> 00:31:33,270 acest lucru ar fi modul echivalent de de punere în aplicare aceeași funcție cu ajutorul 707 00:31:33,270 --> 00:31:34,630 această bibliotecă speciale. 708 00:31:34,630 --> 00:31:36,680 >> Acum, mai degrabă decât tease l afară în întregime, 709 00:31:36,680 --> 00:31:38,520 hai să uităm la unele modele. 710 00:31:38,520 --> 00:31:44,850 Această sintaxă pare să aibă cât de multe funcții anonime 711 00:31:44,850 --> 00:31:49,584 sau funcții fără nume sau funcții lambda AKA? 712 00:31:49,584 --> 00:31:50,190 Doi, nu? 713 00:31:50,190 --> 00:31:52,690 Și știi că, chiar dacă nu esti foarte confortabil cu acest lucru, 714 00:31:52,690 --> 00:31:55,780 doar prin faptul că acesta spune funcție () de două ori. 715 00:31:55,780 --> 00:31:58,172 >> Și se pare că ceea ce acest cod este doing-- 716 00:31:58,172 --> 00:32:01,255 și ne vom referi la referințe on-line, în cele din urmă, pentru unele ajutor cu acest lucru. 717 00:32:01,255 --> 00:32:04,480 Acest lucru înseamnă doar că, atunci când documentul este gata, 718 00:32:04,480 --> 00:32:07,490 mergeți mai departe și să înregistreze următoarea funcție 719 00:32:07,490 --> 00:32:12,064 ca să prezinte handler pentru HTML Element al cărui idee unica este demo. 720 00:32:12,064 --> 00:32:14,480 Și apoi, când acest lucru se întâmplă, numesc aceste două linii de cod. 721 00:32:14,480 --> 00:32:18,677 Și acest lucru este, în mod tragic, o mai mod de a spune verbose return false. 722 00:32:18,677 --> 00:32:21,510 Și am menționat acest lucru doar pentru că veți vedea codul ca aceasta on-line. 723 00:32:21,510 --> 00:32:23,140 Și nu e nimic să fie descurajat de. 724 00:32:23,140 --> 00:32:26,057 Ci, mai degrabă, rețineți că ceea ce este O să fie comune în JavaScript 725 00:32:26,057 --> 00:32:26,765 este această paradigmă. 726 00:32:26,765 --> 00:32:29,510 Și așa de aceea l-am arăta pentru moment. 727 00:32:29,510 --> 00:32:30,010 In regula. 728 00:32:30,010 --> 00:32:32,730 Deci, fără locuință prea mult pe faptul că sintaxa, 729 00:32:32,730 --> 00:32:37,800 sunt există întrebări cu privire la aceste exemple sau idei până acum? 730 00:32:37,800 --> 00:32:38,300 In regula. 731 00:32:38,300 --> 00:32:40,220 Deci, hai să folosim acest lucru pentru ceva util. 732 00:32:40,220 --> 00:32:47,070 Efectuarea de o pagină web care spune doar salut, așa și așa nu este tot ceea ce interesant, 733 00:32:47,070 --> 00:32:47,830 nu a underwhelm. 734 00:32:47,830 --> 00:32:51,038 Acesta nu va fi frumos, dar este de gând să facă ceva util. 735 00:32:51,038 --> 00:32:56,350 Lasă-mă să mă întorc la directorul meu aici și deschide, spune, forma-0.html. 736 00:32:56,350 --> 00:32:59,320 >> Deci să presupunem că acest lucru este boboc pagina de înregistrare sport intramural 737 00:32:59,320 --> 00:33:01,780 fără nici CSS sau orice sentiment de proiectare. 738 00:33:01,780 --> 00:33:05,404 Și vreau să merg mai departe și mentionati aici cu o parolă. 739 00:33:05,404 --> 00:33:08,320 Și am de gând să de acord cu termenii și condițiile și faceți clic pe Înregistrare. 740 00:33:08,320 --> 00:33:11,700 Și acum site-ul spune: "Sunteți înregistrat! (Ei bine, nu chiar.) " 741 00:33:11,700 --> 00:33:15,070 Care pare ca a mers, dar lasă-mă să merg mai departe și forța de reîncărcare. 742 00:33:15,070 --> 00:33:18,720 >> Și permiteți-mi să spun, nu, nu nevoie adresa de email reală. 743 00:33:18,720 --> 00:33:21,820 Sau poate vom spune doar e-mail acolo. 744 00:33:21,820 --> 00:33:25,080 Parola va fi, cum ar fi, 12345. 745 00:33:25,080 --> 00:33:28,810 Și apoi, doar pentru că sunt un idiot, acum e 123,456,789. 746 00:33:28,810 --> 00:33:31,150 Și nu am de gând să verifice cutia. 747 00:33:31,150 --> 00:33:31,850 >> Hmm. 748 00:33:31,850 --> 00:33:32,350 In regula. 749 00:33:32,350 --> 00:33:34,920 Deci nu e de mai multe oportunități pentru îmbunătățirea aici. 750 00:33:34,920 --> 00:33:39,070 Și știi, sau va vedea în PSET șapte, pe care le puteți scrie code-- 751 00:33:39,070 --> 00:33:41,890 și va trebui să scrie cod în PHP-- a-și apăra 752 00:33:41,890 --> 00:33:45,780 împotriva acestor tipuri de utilizator erorilor, deoarece utilizatorul clar 753 00:33:45,780 --> 00:33:46,790 nu a cooperat. 754 00:33:46,790 --> 00:33:49,680 Și el sau ea nu a dat tot valori ai vrut sau chiar în formatul 755 00:33:49,680 --> 00:33:50,630 care le dorea. 756 00:33:50,630 --> 00:33:53,250 Deci veți vedea în PSET șapte care am putea avea cu siguranță unele 757 00:33:53,250 --> 00:33:55,680 cazul în care condițiile care spun în cazul în care adresa de email 758 00:33:55,680 --> 00:33:59,450 nu este un username@something.edu, am putea doar 759 00:33:59,450 --> 00:34:02,575 spun îmi pare rău și ne cerem scuze pentru utilizator mai mult, ca tine s-ar putea să fie în PSET șapte. 760 00:34:02,575 --> 00:34:05,700 Sau în cazul în care nu au verificat cutia, se dovedește în PHP, vă poate detecta că, 761 00:34:05,700 --> 00:34:06,200 prea. 762 00:34:06,200 --> 00:34:09,389 Și cu siguranță în cazul în care parolele nu se potrivesc la fel ca în register.php 763 00:34:09,389 --> 00:34:11,521 pentru PSET șapte, puteți detecta acest lucru. 764 00:34:11,521 --> 00:34:13,770 Dar asta este o durere în gât în ​​care acum se solicita 765 00:34:13,770 --> 00:34:15,510 să mergem până la capăt pe server. 766 00:34:15,510 --> 00:34:17,053 Utilizatorul este informat de eroare. 767 00:34:17,053 --> 00:34:19,219 Și cel puțin dacă nu utilizați Unele tehnici crescator, 768 00:34:19,219 --> 00:34:20,929 acum ei trebuie să faceți clic pe săgeata din spate. 769 00:34:20,929 --> 00:34:23,300 Nu ar fi frumos, ca o mulțime de site-uri web de azi, 770 00:34:23,300 --> 00:34:26,190 dacă ați avut mai mult imediat feedback-ul, instantaneu? 771 00:34:26,190 --> 00:34:31,389 >> Cu alte cuvinte, lasă-mă să merg la versiunea o, care va fi nici o frumoasa. 772 00:34:31,389 --> 00:34:33,469 Dar are această caracteristică. 773 00:34:33,469 --> 00:34:39,590 Malan, 12345, 123456789, nu O să bifați caseta, Register. 774 00:34:39,590 --> 00:34:41,330 Parolele nu se potrivesc. 775 00:34:41,330 --> 00:34:44,459 Deci, chiar dacă acest pop-up este ugly-- putem înlocui în cele din urmă acest 776 00:34:44,459 --> 00:34:47,000 cu ceva de genul Bootstrap, care veți vedea în PSET șapte 777 00:34:47,000 --> 00:34:50,239 este un foarte popular library-- am facut detecta că parolele nu se potrivesc. 778 00:34:50,239 --> 00:34:50,739 In regula. 779 00:34:50,739 --> 00:34:52,530 Ei bine, lasă-mă să stabilească că, utilizatorul. 780 00:34:52,530 --> 00:34:55,460 Lasă-mă să mergeți mai departe și spune 12345, 12345. 781 00:34:55,460 --> 00:34:57,780 Încă nu verificarea acordului. 782 00:34:57,780 --> 00:35:00,210 Trebuie să acceptați la Termeni și condiții. 783 00:35:00,210 --> 00:35:01,760 Deci de ce? 784 00:35:01,760 --> 00:35:04,100 >> Dacă ne-am postulat deja că există o cale, 785 00:35:04,100 --> 00:35:07,260 si noi le-ați necesare PSET șapte pentru a detecta erori 786 00:35:07,260 --> 00:35:09,780 Condiții de acest gen server-side, de ce ar trebui să 787 00:35:09,780 --> 00:35:13,940 deranjez, de asemenea, face acest lucru în JavaScript? 788 00:35:13,940 --> 00:35:15,850 Ce este un argument în favoarea adăugarea ce 789 00:35:15,850 --> 00:35:18,760 esti pe cale de a vedea ca some-- există complexitate suplimentare. 790 00:35:18,760 --> 00:35:23,610 791 00:35:23,610 --> 00:35:25,930 >> Poate nu există nici cu susul. 792 00:35:25,930 --> 00:35:26,924 Ce ar putea fi? 793 00:35:26,924 --> 00:35:27,840 Audiența: [neauzit]. 794 00:35:27,840 --> 00:35:31,132 795 00:35:31,132 --> 00:35:32,340 DAVID MALAN: Oh, interesant. 796 00:35:32,340 --> 00:35:33,530 Exploateaza potențiale. 797 00:35:33,530 --> 00:35:37,540 Atât de sigur, dacă nu sunteți de manipulare introduse de utilizator eronată că mare, 798 00:35:37,540 --> 00:35:40,170 Poate că e cu atât mai bine în cazul în care chiar nu ajunge server. 799 00:35:40,170 --> 00:35:42,160 Mi-ar împinge înapoi acolo și să zicem, ar trebui, probabil, 800 00:35:42,160 --> 00:35:43,284 stabili aceste două probleme. 801 00:35:43,284 --> 00:35:44,140 Dar asta e corect. 802 00:35:44,140 --> 00:35:44,710 Ce altceva? 803 00:35:44,710 --> 00:35:45,626 >> Audiența: [neauzit]. 804 00:35:45,626 --> 00:35:47,970 805 00:35:47,970 --> 00:35:49,014 >> DAVID MALAN: Da. 806 00:35:49,014 --> 00:35:51,680 Acest cod, așa cum am spus înainte, este interpretat pe partea de client. 807 00:35:51,680 --> 00:35:53,846 Ea nu deranjează pe server, ceea ce înseamnă că nu 808 00:35:53,846 --> 00:35:55,930 impact sarcină sau capacitatea serverului. 809 00:35:55,930 --> 00:35:59,840 Și acum, pentru puțin mine vechi, acest nu are niciun efect semnificativ 810 00:35:59,840 --> 00:36:01,970 pentru că am un singur utilizator chiar acum. 811 00:36:01,970 --> 00:36:04,010 >> Dar daca esti vreun site-ul de dimensiuni decente, 812 00:36:04,010 --> 00:36:07,400 în special cele mai mari, cum ar fi Facebook, cu atât mai mult puteți să vă păstrați de oameni de pe 813 00:36:07,400 --> 00:36:09,927 a server-ul dvs. mai bine pentru că un server, desigur, 814 00:36:09,927 --> 00:36:12,510 are doar o cantitate finită de memorie RAM, un număr finit de gigahertzi, 815 00:36:12,510 --> 00:36:16,340 un număr finit de lucruri se poate face pe unitatea de timp. 816 00:36:16,340 --> 00:36:19,170 Deci, dacă există mai multe persoane în lumea lovind server-ul dvs., 817 00:36:19,170 --> 00:36:21,750 logare accidental incorect, la fel de bine, dacă 818 00:36:21,750 --> 00:36:23,254 pot păstra ca sarcină de pe server. 819 00:36:23,254 --> 00:36:25,420 Plus, mai ales pe un telefon mobil device-- dacă ai vreodată 820 00:36:25,420 --> 00:36:29,190 conectați la my.harvard sau NETID Yale sau altele asemenea, 821 00:36:29,190 --> 00:36:32,330 există acest latenta cu o mulțime de site-uri de genul asta prin care ia, 822 00:36:32,330 --> 00:36:34,110 cum ar fi, o naibii de secundă sau două, uneori. 823 00:36:34,110 --> 00:36:37,979 Și apoi, Dumnezeul meu, dacă ai scris greșit, atunci va trebui să lovit din spate și refaceți-l. 824 00:36:37,979 --> 00:36:40,520 Deci nu e latenta, mai ales pe conexiunile de rețea mai lent. 825 00:36:40,520 --> 00:36:43,030 Dar JavaScript, pentru că ruleaza pe client 826 00:36:43,030 --> 00:36:46,720 și nu are nevoie pentru a merge înainte și înapoi peste un internet potențial lent 827 00:36:46,720 --> 00:36:49,780 conexiune, puteți obține Feedback-ul aproape instantaneu. 828 00:36:49,780 --> 00:36:50,760 >> Deci, să ne uităm la asta. 829 00:36:50,760 --> 00:36:54,280 Lasă-mă să deschid formă 0 și uita-te la HTML aici. 830 00:36:54,280 --> 00:36:56,040 Și hai să vedem ce se întâmplă. 831 00:36:56,040 --> 00:36:59,460 Aceasta este o formă a cărei acțiune este register.php. 832 00:36:59,460 --> 00:37:01,530 Sunt doar folosind primești că am putut vedea adresa URL. 833 00:37:01,530 --> 00:37:05,030 Dar pentru parole, am dori cu siguranță pentru a schimba acest lucru pentru a posta în realitate. 834 00:37:05,030 --> 00:37:06,910 Iată un câmp de introducere a textului de tip. 835 00:37:06,910 --> 00:37:09,050 Iată o altă intrare câmp de tip parolă. 836 00:37:09,050 --> 00:37:13,150 Iată, dacă nu ați mai văzut, o intrare de tip caseta. 837 00:37:13,150 --> 00:37:15,250 >> Dar nu e nici o JavaScript aici un fel. 838 00:37:15,250 --> 00:37:18,170 Acesta este doar HTML care merge la register.php. 839 00:37:18,170 --> 00:37:21,020 Dar, în versiunea parte, în cazul în care am a început pentru a obține aceste ferestre pop-up, 840 00:37:21,020 --> 00:37:23,010 Să vedem ce se întâmplă de fapt aici. 841 00:37:23,010 --> 00:37:26,757 În versiunea unul, ceea ce Am de gând să see-- I 842 00:37:26,757 --> 00:37:29,340 gandit ca as putea bloca destul cu suficiente cuvinte, dar am fugit. 843 00:37:29,340 --> 00:37:35,180 844 00:37:35,180 --> 00:37:38,590 >> În versiunea Unu acolo mergem. 845 00:37:38,590 --> 00:37:43,180 În versiunea unul, observa following-- și nu este cel mai bun punerea în aplicare, 846 00:37:43,180 --> 00:37:44,420 dar e prima mea. 847 00:37:44,420 --> 00:37:47,680 Observați că sub media formă, am o etichetă script. 848 00:37:47,680 --> 00:37:49,430 Și o etichetă script înseamnă, hei, browser-ul, aici 849 00:37:49,430 --> 00:37:52,340 vine un cod în, de obicei, JavaScript. 850 00:37:52,340 --> 00:37:54,420 Și acum, observați ce fac. 851 00:37:54,420 --> 00:37:59,070 Pe line-- pot abia citeste it-- linia 32, se spune, 852 00:37:59,070 --> 00:38:01,420 var form-- așa da-mi o variabilă numită formă. 853 00:38:01,420 --> 00:38:05,049 Și apoi obține document.getElementId de "înregistrare". 854 00:38:05,049 --> 00:38:05,590 Ce este asta? 855 00:38:05,590 --> 00:38:07,290 Ei bine, lasă-mă să înapoi aici. 856 00:38:07,290 --> 00:38:11,510 Și notificare, ah, i-am dat elementul formularul o idee arbitrară, dar descriptiv 857 00:38:11,510 --> 00:38:13,050 de înregistrare. 858 00:38:13,050 --> 00:38:16,820 Deci, aceasta dă-mi o variabilă care mi permite să apuca acel nod, 859 00:38:16,820 --> 00:38:19,580 că dreptunghi în copac numit forma. 860 00:38:19,580 --> 00:38:24,460 mijloace form.onsubmit, hei browser, înregistra un ascultător eveniment 861 00:38:24,460 --> 00:38:25,470 în acest formular. 862 00:38:25,470 --> 00:38:28,890 Cu alte cuvinte, atunci când acest lucru este formular prezentat, executați următorul cod. 863 00:38:28,890 --> 00:38:30,810 Ea nu are nevoie de un nume, deoarece de ce trebuie să știți numele? 864 00:38:30,810 --> 00:38:32,880 Trebuie doar să știi ce să execute, Ergo 865 00:38:32,880 --> 00:38:35,610 este o funcție de anonim sau lambda. 866 00:38:35,610 --> 00:38:37,632 Și asta funcție este toate aceste linii de aici. 867 00:38:37,632 --> 00:38:40,840 Și acum, ca să fiu sincer, chiar dacă nu ar fi scris vreodată JavaScript 868 00:38:40,840 --> 00:38:44,200 înainte, e doar C și PHP logica. 869 00:38:44,200 --> 00:38:51,720 Deci, dacă form.email.value == "" - astfel încât în ​​cazul în care câmpul de e-mail este necompletat, 870 00:38:51,720 --> 00:38:54,980 tipa la utilizatorul cu "Trebuie furniza adresa ta de e-mail. " 871 00:38:54,980 --> 00:38:58,980 Altfel, dacă form.password.value este țipa gol la utilizator, 872 00:38:58,980 --> 00:39:00,400 "Trebuie să furnizați parola." 873 00:39:00,400 --> 00:39:04,240 >> Mai interesant logic, dacă nu form.password.value 874 00:39:04,240 --> 00:39:08,630 egal form.confirmation.value-- în cazul în care a confirmare provin de la? 875 00:39:08,630 --> 00:39:09,470 Lasă-mă să înapoi. 876 00:39:09,470 --> 00:39:12,870 Ei bine, am sunat această intrare câmp aici parola. 877 00:39:12,870 --> 00:39:15,180 Și i-am sunat asta aici confirmare. 878 00:39:15,180 --> 00:39:17,850 Aș fi putut să-l numit parola două sau orice altceva. 879 00:39:17,850 --> 00:39:20,560 Eu doar verificarea logic că aceste două sunt la fel. 880 00:39:20,560 --> 00:39:25,760 Else-- se dovedește acest lucru este domnul Boole again-- o valoare booleană, caseta de validare. 881 00:39:25,760 --> 00:39:29,810 Deci, dacă spun, exclamație point-- Dacă nu form.agreement.checked, 882 00:39:29,810 --> 00:39:31,820 tipa la utilizatorul la fel de bine. 883 00:39:31,820 --> 00:39:34,470 >> Deci această sintaxă veți vedea este foarte frecvente în JavaScript, 884 00:39:34,470 --> 00:39:35,970 în cazul în care aveți acest notatie punctata. 885 00:39:35,970 --> 00:39:37,460 Începi cu un obiect aici. 886 00:39:37,460 --> 00:39:41,430 Va veti scufunda mai adanc la un la o proprietate ca parolă. 887 00:39:41,430 --> 00:39:43,280 Și apoi ajunge la valoarea sa reală. 888 00:39:43,280 --> 00:39:45,830 Și din nou, aici este de intrare. 889 00:39:45,830 --> 00:39:47,310 Aici este parola nume. 890 00:39:47,310 --> 00:39:50,860 Iar valoarea sa este, indiferent de umană a introdus de fapt în. 891 00:39:50,860 --> 00:39:53,610 >> Deci, în toate aceste cazuri, m-am întors fals. 892 00:39:53,610 --> 00:39:55,800 Dar dacă nu, mă voi întoarce adevărat. 893 00:39:55,800 --> 00:39:58,030 Și așa acum vedem un utilizarea imperioase de când 894 00:39:58,030 --> 00:40:00,620 v-ar întoarce false la opri ceea ce face de utilizator 895 00:40:00,620 --> 00:40:03,200 și să facă el sau ea alege din nou sau de tip nou. 896 00:40:03,200 --> 00:40:05,870 În caz contrar, ne vom întoarce adevărat. 897 00:40:05,870 --> 00:40:08,585 >> Și permiteți-mi să introducă o alte variante de acest lucru doar 898 00:40:08,585 --> 00:40:13,140 semințelor o înțelegere cu privire la aceasta. 899 00:40:13,140 --> 00:40:16,850 Ei bine, în versiunea 2 a acestui, forma-2-- O voi face cu un val de o mână. 900 00:40:16,850 --> 00:40:19,920 Acest lucru este, pentru cei curioși, versiunea jQuery, 901 00:40:19,920 --> 00:40:23,330 cei care s-ar putea dori să se ocupa în special de bibliotecă. 902 00:40:23,330 --> 00:40:25,145 Dar să start-- și întrebări? 903 00:40:25,145 --> 00:40:29,230 Lasă-mă să pauză pentru moment, deoarece care a fost rapid și o mulțime. 904 00:40:29,230 --> 00:40:32,610 >> Dar mai frumos lucru de aici este că toate din Codul este destul de mult la fel. 905 00:40:32,610 --> 00:40:33,985 Lucruri noi este ceea ce este DOM? 906 00:40:33,985 --> 00:40:35,115 Ce sunt aceste dreptunghiuri? 907 00:40:35,115 --> 00:40:35,990 Ce sunt aceste noduri? 908 00:40:35,990 --> 00:40:37,540 Ce este o funcție anonim? 909 00:40:37,540 --> 00:40:38,830 Ce este o tratare a evenimentului? 910 00:40:38,830 --> 00:40:43,480 Dar din fericire, de cele mai multe, care este doar cerc complet de la, să zicem, săptămâna zero. 911 00:40:43,480 --> 00:40:43,980 In regula. 912 00:40:43,980 --> 00:40:46,070 Deci, ceva puțin mai interesant? 913 00:40:46,070 --> 00:40:49,340 Ei bine, în primul rând, permiteți-mi să merg înainte și deschide Google Maps. 914 00:40:49,340 --> 00:40:53,360 Și veți observa că pentru o clipă, pe a doua Split, 915 00:40:53,360 --> 00:40:55,930 observați ce se întâmplă atunci când Am faceți clic destul de repede. 916 00:40:55,930 --> 00:40:59,720 Și această conexiune la Harvard este atât de rapid că nu-l observa cu adevărat. 917 00:40:59,720 --> 00:41:04,469 Dar ce te fel de fel de a vedea dacă am faceți clic și trageți foarte repede? 918 00:41:04,469 --> 00:41:07,010 Aceia dintre voi vizionarea on-line, dacă încetini acest vitezei 0,5x, 919 00:41:07,010 --> 00:41:09,640 puteți vedea mai bine acest lucru. 920 00:41:09,640 --> 00:41:13,550 >> Ce se întâmpla doar înainte de a mă apasat și a târât? 921 00:41:13,550 --> 00:41:15,900 Lasă-mă să încerc să-mi fac here-- altceva, cum ar fi 90210. 922 00:41:15,900 --> 00:41:17,550 Să mergem mai departe. 923 00:41:17,550 --> 00:41:19,000 Asta a fost foarte repede, de asemenea. 924 00:41:19,000 --> 00:41:22,460 Ce zici de Disney World? 925 00:41:22,460 --> 00:41:23,190 Nu mergem. 926 00:41:23,190 --> 00:41:23,690 BINE. 927 00:41:23,690 --> 00:41:26,030 Ce ai văzut o fracțiune de secundă? 928 00:41:26,030 --> 00:41:27,200 La fel, cum ar fi, grinzi, nu? 929 00:41:27,200 --> 00:41:28,930 Substituenți de gresie? 930 00:41:28,930 --> 00:41:30,270 >> Ei bine, ce se întâmplă aici? 931 00:41:30,270 --> 00:41:35,410 Google Maps este un exemplu frumos de această tehnologie care se numește AJAX. 932 00:41:35,410 --> 00:41:38,510 Și acest lucru este în cazul în care vom începe să utilizați JavaScript într-o deosebit de 933 00:41:38,510 --> 00:41:39,277 mod ademenitor. 934 00:41:39,277 --> 00:41:41,610 Înapoi în a doua zi, a fost acest site numit MapQuest. 935 00:41:41,610 --> 00:41:44,120 Și ar fi trebuit să ia o screenshot din acest din anii 1990, 936 00:41:44,120 --> 00:41:45,820 în cazul în care dacă ai vrut să uite aici pe hartă, 937 00:41:45,820 --> 00:41:48,590 v-ar faceți clic pe o săgeată literalmente de până la partea de sus care ți-a arătat 938 00:41:48,590 --> 00:41:49,870 un pătrat diferită a hărții. 939 00:41:49,870 --> 00:41:51,790 Dacă ați vrut să vă deplasa la stânga, tu clic pe o săgeată care a aratat 940 00:41:51,790 --> 00:41:53,210 un pătrat diferită a hărții. 941 00:41:53,210 --> 00:41:54,840 Și unele site-uri face mai acest lucru astăzi. 942 00:41:54,840 --> 00:41:57,820 Dar chiar MapQuest a ajuns mai bine, cum ar fi Google Maps. 943 00:41:57,820 --> 00:42:01,880 >> În schimb, ceea ce este mai bine aceste zile este site-uri care folosesc AJAX. 944 00:42:01,880 --> 00:42:04,510 AJAX-- altfel cunoscut sub numele de Asynchronous JavaScript si XML, 945 00:42:04,510 --> 00:42:08,370 care este doar un mod fantezist de a spune o tehnologie sau tehnica pe care 946 00:42:08,370 --> 00:42:14,200 permite un browser folosind JavaScript pentru a face cereri HTTP suplimentare 947 00:42:14,200 --> 00:42:16,390 după ce pagina a fost incarcata. 948 00:42:16,390 --> 00:42:17,479 Deci, ce înseamnă asta? 949 00:42:17,479 --> 00:42:19,270 Ei bine, ar fi un fel de enervant în Gmail 950 00:42:19,270 --> 00:42:21,103 dacă de fiecare dată când a vrut pentru a verifica e-mail-ul, 951 00:42:21,103 --> 00:42:24,940 ai fi lovit literalmente de control-R sau Command-R sau faceți clic pe butonul Reload 952 00:42:24,940 --> 00:42:26,580 și pagina de darn întreaga ar reincarca. 953 00:42:26,580 --> 00:42:26,800 Dreapta? 954 00:42:26,800 --> 00:42:28,460 Ar clipi alb probabil pentru a doua. 955 00:42:28,460 --> 00:42:30,043 Te-ar vedea bara de progres prost. 956 00:42:30,043 --> 00:42:33,170 Și doar pentru a vedea dacă aveți noul e-mail, pagina web întreg și adresa URL 957 00:42:33,170 --> 00:42:34,580 esti la ar trebui să reîncărcați. 958 00:42:34,580 --> 00:42:35,960 >> Dar asta nu e ceea ce se întâmplă în Gmail. 959 00:42:35,960 --> 00:42:36,459 Dreapta? 960 00:42:36,459 --> 00:42:40,300 Atunci când primiți un e-mail nou în Gmail, ceea ce se întâmplă pe ecran? 961 00:42:40,300 --> 00:42:41,480 Doar apare, nu? 962 00:42:41,480 --> 00:42:44,280 Doar pare magic ca un rând nou în tabel. 963 00:42:44,280 --> 00:42:47,030 Care implică de fapt o sumă decentă de complexitate. 964 00:42:47,030 --> 00:42:51,892 De fapt, dacă te gândești la acest copac, care chiar dacă este unul simplu aici, 965 00:42:51,892 --> 00:42:54,100 Gmail-- și că va trebui să se uite la codul de a fi sure-- 966 00:42:54,100 --> 00:42:58,710 probabil are un tabel HTML sau poate o lista neordonata că face 967 00:42:58,710 --> 00:43:01,060 fiecare dintre cutiile poștale dvs. e-mailuri ca. 968 00:43:01,060 --> 00:43:04,050 >> Și așa că, dacă vă imaginați acest acolo este un copac în memorie atunci când sunteți 969 00:43:04,050 --> 00:43:09,050 folosind Gmail care arata un fel de fel de ca aceasta, atunci când Google își dă seama, ooh, 970 00:43:09,050 --> 00:43:12,770 aveți un e-mail nou, aceasta nu doresc pentru a reconstrui întregul copac. 971 00:43:12,770 --> 00:43:16,430 Mai degrabă, vrea să găsească nodul în copac care reprezintă Inbox 972 00:43:16,430 --> 00:43:18,580 și introduceți doar un nou nod. 973 00:43:18,580 --> 00:43:24,640 >> Deci, foarte similar cu PSET cinci, în cazul în care a trebuit să introduceți noduri într-un tabel hash, 974 00:43:24,640 --> 00:43:28,410 În mod similar face Google, prin intermediul Cod JavaScript care le-a scris, 975 00:43:28,410 --> 00:43:31,890 traverse acest copac, ne dăm seama unde este că inbox parte a ferestrei, 976 00:43:31,890 --> 00:43:33,440 și apoi introduceți un rând nou. 977 00:43:33,440 --> 00:43:37,460 Și un rând nou doar înseamnă unul sau mai noi noduri într-un copac. 978 00:43:37,460 --> 00:43:41,340 >> Și așa AJAX este această tehnică care permite exact acest lucru. 979 00:43:41,340 --> 00:43:44,440 După ce ați vizitat un URL, Cu toate acestea nebun lung este, 980 00:43:44,440 --> 00:43:46,472 și o dată pagina are fost încărcate, puteți încă 981 00:43:46,472 --> 00:43:48,430 apuca mai multe date de la internet-- fie că este vorba 982 00:43:48,430 --> 00:43:52,460 un e-mail sau o piesă a unui map-- apuca-l în spatele scenei 983 00:43:52,460 --> 00:43:55,290 și apoi introduceți-l în pagina astfel că omul nu prea 984 00:43:55,290 --> 00:43:56,910 trebuie să așteptați pentru ea. 985 00:43:56,910 --> 00:43:58,980 >> Facebook Messenger funcționează în același mod. 986 00:43:58,980 --> 00:44:01,562 Orice număr de alte websites-- oh, de fapt, chiar acest lucru. 987 00:44:01,562 --> 00:44:04,270 Adică, acest lucru este, sincer, un fel de un enervant dispun de aceste zile. 988 00:44:04,270 --> 00:44:07,500 Dacă aș începe să căutați cats-- acest este un fel de experiență de utilizare oribil. 989 00:44:07,500 --> 00:44:08,990 Doar începe să caute pentru mine. 990 00:44:08,990 --> 00:44:10,050 Ei bine, ceea ce o face? 991 00:44:10,050 --> 00:44:12,920 URL-ul nu sa schimbat cu adevărat când am început tastarea. 992 00:44:12,920 --> 00:44:17,330 Dar ce se întâmplă pe întreg teritoriul UE wire-- OK, hmm interesant. 993 00:44:17,330 --> 00:44:20,470 Ce se întâmplă pe întreg teritoriul UE sârmă aici doar devine mai ciudat. 994 00:44:20,470 --> 00:44:21,090 >> BINE. 995 00:44:21,090 --> 00:44:24,670 Așa că lasă-mă să merg mai departe și de a inspecta elementul și du-te la tab-ul de rețea 996 00:44:24,670 --> 00:44:27,040 și să încerce să facă acest tehnică și mai puțin despre pisici. 997 00:44:27,040 --> 00:44:32,595 Așa cum am tip, literalmente, pisici si-- ce se întâmplă 998 00:44:32,595 --> 00:44:37,710 per-- Eu nu am de gând să faceți clic asta. 999 00:44:37,710 --> 00:44:38,210 In regula. 1000 00:44:38,210 --> 00:44:44,280 Deci aici, ce se întâmplă în fiecare timp am tip un caracter, aparent? 1001 00:44:44,280 --> 00:44:45,000 Cum ar fi, nivel scăzut? 1002 00:44:45,000 --> 00:44:47,860 Ce se întâmplă cu fiecare dintre cele caractere Sunt tastarea la tastatura mea? 1003 00:44:47,860 --> 00:44:48,359 Da? 1004 00:44:48,359 --> 00:44:50,950 Audiența: [neauzit]. 1005 00:44:50,950 --> 00:44:52,340 >> DAVID MALAN: Exact. 1006 00:44:52,340 --> 00:44:55,600 Fiecare dintre aceste personaje este merge la Google, la un moment dat. 1007 00:44:55,600 --> 00:44:58,490 Ele sunt construirea unui șir de pe serverul lor, care reprezintă 1008 00:44:58,490 --> 00:44:59,936 tot ce am scris până acum în. 1009 00:44:59,936 --> 00:45:01,810 Și de fiecare dată am tip un alt personaj, acestea 1010 00:45:01,810 --> 00:45:04,530 folosi sos lor secret al unui algoritm de căutare și dau seama, 1011 00:45:04,530 --> 00:45:07,370 vrea să spună aceasta pagina cat sau aceasta pagina pisica sau altele asemenea? 1012 00:45:07,370 --> 00:45:10,620 Deci, într-un anumit sens, mi oferă o mai bine experiența în care nu-mi place nici 1013 00:45:10,620 --> 00:45:11,860 trebuie să completeze gândul meu. 1014 00:45:11,860 --> 00:45:14,440 Și într-adevăr, e un util lucru, completare automată, în general. 1015 00:45:14,440 --> 00:45:17,690 Dacă algoritmii lor sunt destul de bune și în cazul în care căutările mele sunt destul de evidente, 1016 00:45:17,690 --> 00:45:19,300 Nu am să tastați tot cuvântul. 1017 00:45:19,300 --> 00:45:22,110 Vor să-mi spui ce este Sunt de fapt căutarea. 1018 00:45:22,110 --> 00:45:25,940 Deci, ceea ce Google numește instant de căutare este doar folosind AJAX, 1019 00:45:25,940 --> 00:45:30,820 folosind codul care le permite să solicite conținut suplimentar prin intermediul unui browser web 1020 00:45:30,820 --> 00:45:34,026 în spatele scenei folosind acest limbă nouă, JavaScript. 1021 00:45:34,026 --> 00:45:35,400 Deci avem câteva minute. 1022 00:45:35,400 --> 00:45:37,710 Și să mă suni la amicul meu Colton până pe scena, 1023 00:45:37,710 --> 00:45:40,090 din moment ce părea în special distracție ultima dată 1024 00:45:40,090 --> 00:45:42,290 să introducă o tehnologie că unii dintre voi 1025 00:45:42,290 --> 00:45:44,769 au exprimat interesul în cazul proiectelor finale. 1026 00:45:44,769 --> 00:45:47,310 Ne-am gândit că ar fi distractiv de a aduce un voluntar, deși, în prezent 1027 00:45:47,310 --> 00:45:50,074 pentru a vă arăta un plus față de aceasta că Tu-- permite da, 1028 00:45:50,074 --> 00:45:50,990 Am văzut această mână primul. 1029 00:45:50,990 --> 00:45:52,900 Haide sus. 1030 00:45:52,900 --> 00:45:53,560 Foarte bine facut. 1031 00:45:53,560 --> 00:45:55,035 Loc de muncă bun. 1032 00:45:55,035 --> 00:45:57,410 Am de gând să proiecteze acest lucru pe ecranul într-o clipă. 1033 00:45:57,410 --> 00:45:58,150 Care e numele tău pentru toată lumea? 1034 00:45:58,150 --> 00:45:59,180 >> EFA: Sunt Efa. 1035 00:45:59,180 --> 00:45:59,410 >> DAVID MALAN: Etha? 1036 00:45:59,410 --> 00:45:59,785 >> EFA: Efa. 1037 00:45:59,785 --> 00:46:00,160 >> DAVID MALAN: Efa? 1038 00:46:00,160 --> 00:46:00,730 >> EFA: Da. 1039 00:46:00,730 --> 00:46:01,250 >> DAVID MALAN: Mă bucur să te văd. 1040 00:46:01,250 --> 00:46:01,600 In regula. 1041 00:46:01,600 --> 00:46:02,590 Lasă-mă să pregătiți. 1042 00:46:02,590 --> 00:46:04,423 Vino la mijloc cu Colton aici. 1043 00:46:04,423 --> 00:46:07,050 Ce Colton are în mâinile sale astăzi este un control de la distanță. 1044 00:46:07,050 --> 00:46:10,440 Deci, mai degrabă decât doar sta acolo într-o lume tri-dimensională excelentă în jurul valorii de 1045 00:46:10,440 --> 00:46:14,080 așa cum a făcut Colton, acum Efa poate de fapt în jurul valorii de mers pe jos de merge în sus, 1046 00:46:14,080 --> 00:46:16,689 jos, stânga, și la dreapta ca o Nintendo sau Xbox controler. 1047 00:46:16,689 --> 00:46:18,230 EFA: am de gând să cadă de pe scena. 1048 00:46:18,230 --> 00:46:20,500 DAVID MALAN: voi sta aproximativ aici. 1049 00:46:20,500 --> 00:46:21,991 Dar asta este un risc. 1050 00:46:21,991 --> 00:46:22,490 BINE. 1051 00:46:22,490 --> 00:46:25,690 Deci, mergeți mai departe și a pus cele de pe. 1052 00:46:25,690 --> 00:46:29,315 Lasă-mă să merg mai departe și comuta la ecranul de aici. 1053 00:46:29,315 --> 00:46:30,670 Permiteți-mi să dim luminile. 1054 00:46:30,670 --> 00:46:32,780 Și Colton, lasă-mă să vin suport lângă tine. 1055 00:46:32,780 --> 00:46:35,520 >> Vrei să explici aici cu microfonul ceea ce facem noi? 1056 00:46:35,520 --> 00:46:36,380 Poftim. 1057 00:46:36,380 --> 00:46:37,280 >> COLTON: Sigur. 1058 00:46:37,280 --> 00:46:39,980 Deci, acum suntem de încărcare de până oculus, 1059 00:46:39,980 --> 00:46:43,070 Cred operating-- nu funcționează sistem, dar programul principal, în cazul în care 1060 00:46:43,070 --> 00:46:46,630 puteți accesa toate jocurile și Aplicații care sunt în bibliotecă. 1061 00:46:46,630 --> 00:46:50,060 Deci, chiar acum, aceasta ar trebui să spun atingeți touchpad-ul pentru a începe. 1062 00:46:50,060 --> 00:46:53,430 TouchPad va fi pe partea dreaptă a setului cu cască. 1063 00:46:53,430 --> 00:46:54,569 Deci, mergeți mai departe și tap-- 1064 00:46:54,569 --> 00:46:55,110 EFA: Oh, omule. 1065 00:46:55,110 --> 00:46:56,443 DAVID MALAN: Da, acolo te duci. 1066 00:46:56,443 --> 00:47:00,340 1067 00:47:00,340 --> 00:47:02,460 Calitatea Efa este de a vedea este calitatea mult mai mare. 1068 00:47:02,460 --> 00:47:03,831 Acesta este doar Wi-Fi aici. 1069 00:47:03,831 --> 00:47:05,580 COLTON: Deci, ce ești O să vrei să faci 1070 00:47:05,580 --> 00:47:08,350 se uita spre partea de sus dreapta a ecranului. 1071 00:47:08,350 --> 00:47:10,420 Da, jocul pe partea dreaptă foarte sus. 1072 00:47:10,420 --> 00:47:14,780 Și apoi atunci când sunteți selectarea l, atingeți din nou touchpad-ul. 1073 00:47:14,780 --> 00:47:17,010 Cred că Dreadhalls sale. 1074 00:47:17,010 --> 00:47:20,820 Și apoi aici este un-- aici, să mă ține ochelarii pentru tine. 1075 00:47:20,820 --> 00:47:24,420 1076 00:47:24,420 --> 00:47:25,790 >> Asa ca am doar ia dat un controler. 1077 00:47:25,790 --> 00:47:28,886 Deci, acum el poate controla jocul. 1078 00:47:28,886 --> 00:47:30,510 El poate deplasa și chestii de genul asta. 1079 00:47:30,510 --> 00:47:31,968 Deci, mergeți mai departe și privi în sus la partea de sus. 1080 00:47:31,968 --> 00:47:33,640 Ar trebui să vedeți un joc nou. 1081 00:47:33,640 --> 00:47:36,310 Deci, mergeți mai departe și se poate face acest lucru. 1082 00:47:36,310 --> 00:47:39,320 Acum, ar trebui să fie în măsură să controleze te cu operatorul, 1083 00:47:39,320 --> 00:47:43,860 precum și, de îndată ce jocul incarca aici. 1084 00:47:43,860 --> 00:47:46,356 Acest lucru ar putea fi un pic înfricoșător. 1085 00:47:46,356 --> 00:47:47,300 >> EFA: Acum spune-mi. 1086 00:47:47,300 --> 00:47:50,132 BINE. 1087 00:47:50,132 --> 00:47:51,080 >> COLTON: Bine. 1088 00:47:51,080 --> 00:47:52,650 Deci confirme că puteți muta în jurul valorii. 1089 00:47:52,650 --> 00:47:52,750 BINE. 1090 00:47:52,750 --> 00:47:53,583 Puteți muta în jurul valorii. 1091 00:47:53,583 --> 00:47:54,300 Perfect. 1092 00:47:54,300 --> 00:47:56,470 Deci, dacă te uiți în jos, ai o hartă. 1093 00:47:56,470 --> 00:47:58,170 Harta vă arată unde vă aflați. 1094 00:47:58,170 --> 00:47:59,720 Poti sa te uiti în jurul camerei. 1095 00:47:59,720 --> 00:48:01,440 Puteți activa complet în jurul valorii. 1096 00:48:01,440 --> 00:48:02,128 Da, exact. 1097 00:48:02,128 --> 00:48:02,627 Intoarce-te. 1098 00:48:02,627 --> 00:48:05,370 1099 00:48:05,370 --> 00:48:07,125 >> Deci, uita-te la stânga. 1100 00:48:07,125 --> 00:48:09,875 Cred că e ceva ce se poate ridica pe un butoi în cameră. 1101 00:48:09,875 --> 00:48:11,709 >> EFA: Cum pot obține harta din drum? 1102 00:48:11,709 --> 00:48:12,375 COLTON: Uită-te în sus. 1103 00:48:12,375 --> 00:48:12,980 Uită-te în sus. 1104 00:48:12,980 --> 00:48:13,480 In regula. 1105 00:48:13,480 --> 00:48:13,765 Nu te duci. 1106 00:48:13,765 --> 00:48:15,181 Acum mergeți mai departe și chiar se întoarce. 1107 00:48:15,181 --> 00:48:21,460 1108 00:48:21,460 --> 00:48:24,620 Asa ca uite mai departe pentru a stânga. 1109 00:48:24,620 --> 00:48:25,530 Păstreze în mișcare la stânga. 1110 00:48:25,530 --> 00:48:26,960 Continuă să cauți stânga. 1111 00:48:26,960 --> 00:48:27,541 Continua. 1112 00:48:27,541 --> 00:48:28,040 Da. 1113 00:48:28,040 --> 00:48:28,720 >> EFA: Oh, în acest fel. 1114 00:48:28,720 --> 00:48:29,261 >> COLTON: Da. 1115 00:48:29,261 --> 00:48:30,999 Walk spre ea cu controlerul. 1116 00:48:30,999 --> 00:48:31,540 Nu te duci. 1117 00:48:31,540 --> 00:48:32,790 Acum ar trebui să spun ridica-l. 1118 00:48:32,790 --> 00:48:33,360 Nu te duci. 1119 00:48:33,360 --> 00:48:34,290 Ridică-l. 1120 00:48:34,290 --> 00:48:35,550 In regula. 1121 00:48:35,550 --> 00:48:38,286 Acum, hai să plecăm din această cameră. 1122 00:48:38,286 --> 00:48:42,209 Du-te și umblă la acea ușă. 1123 00:48:42,209 --> 00:48:45,000 Deci ai de gând să hold-- se spune țineți apăsat butonul pentru a forța deschide. 1124 00:48:45,000 --> 00:48:46,333 Deci, mergeți mai departe și țineți apăsat butonul. 1125 00:48:46,333 --> 00:48:48,250 Da, fortandu-l deschideți. 1126 00:48:48,250 --> 00:48:48,750 In regula. 1127 00:48:48,750 --> 00:48:49,410 Loc de muncă bun. 1128 00:48:49,410 --> 00:48:50,826 Acum suntem de mers pe jos din cameră. 1129 00:48:50,826 --> 00:48:56,970 1130 00:48:56,970 --> 00:49:01,366 Deci, am de gând să părăsească restul de până să te și vezi ce afli. 1131 00:49:01,366 --> 00:49:02,865 EFA: Nu mă duc în camera întunecată. 1132 00:49:02,865 --> 00:49:07,315 1133 00:49:07,315 --> 00:49:07,815 Oh, așteptați. 1134 00:49:07,815 --> 00:49:09,314 Acum trebuie să mă duc pe hol întunecat? 1135 00:49:09,314 --> 00:49:10,785 OK, mă întorc [neauzit]. 1136 00:49:10,785 --> 00:49:15,520 1137 00:49:15,520 --> 00:49:16,270 COLTON: Bine. 1138 00:49:16,270 --> 00:49:17,560 Unele mai multe elemente pentru a ridica. 1139 00:49:17,560 --> 00:49:19,370 Se pare că unele monede. 1140 00:49:19,370 --> 00:49:22,242 Asta e un pick de blocare. 1141 00:49:22,242 --> 00:49:24,200 Deci, dacă veți găsi un blocat ușă, puteți utiliza. 1142 00:49:24,200 --> 00:49:27,755 1143 00:49:27,755 --> 00:49:28,380 Esti speriat? 1144 00:49:28,380 --> 00:49:29,371 >> EFA: Nu încă. 1145 00:49:29,371 --> 00:49:29,871 COLTON: OK. 1146 00:49:29,871 --> 00:49:34,850 1147 00:49:34,850 --> 00:49:35,497 >> Pretend-- da. 1148 00:49:35,497 --> 00:49:37,330 Doar pretinde că ești de fapt stând acolo. 1149 00:49:37,330 --> 00:49:39,580 Și dacă te întorci around-- le-ați luat pentru a te obișnuiești cu el. 1150 00:49:39,580 --> 00:49:40,752 Dar are sens. 1151 00:49:40,752 --> 00:49:43,960 DAVID MALAN: Și în timp ce continuă să Efa juca, deoarece am putea face acest lucru toată ziua, 1152 00:49:43,960 --> 00:49:45,381 putem toți vârful-n picioare aici. 1153 00:49:45,381 --> 00:49:48,130 Dar avem alte două perechi, dacă doriți să vină și să se joace. 1154 00:49:48,130 --> 00:49:49,980 În caz contrar, vom vedea vă următoarea miercuri. 1155 00:49:49,980 --> 00:49:51,354 Vă mulțumesc pentru a voluntar noastră de astăzi. 1156 00:49:51,354 --> 00:49:52,101 [Aplauze] 1157 00:49:52,101 --> 00:49:54,506 1158 00:49:54,506 --> 00:49:57,392 >> [MUSIC - "Seinfeld tema"] 1159 00:49:57,392 --> 00:49:58,222 1160 00:49:58,222 --> 00:50:00,180 SPEAKER 1: Ei bine, eu sunt pune o nouă PL montare pe. 1161 00:50:00,180 --> 00:50:01,800 Am schimbat OLPF-- 1162 00:50:01,800 --> 00:50:03,980 >> SPEAKER 2: Deci, ce exact faci? 1163 00:50:03,980 --> 00:50:07,063 >> SPEAKER 1: Ei bine, fiecare dintre these-- aici, să-ți arăt asta aici. 1164 00:50:07,063 --> 00:50:08,690 Puteți vedea aici. 1165 00:50:08,690 --> 00:50:09,510 >> SPEAKER 3: Cred că sunt bine cu acestea. 1166 00:50:09,510 --> 00:50:09,933 Vrei ceva mai mult? 1167 00:50:09,933 --> 00:50:11,325 >> SPEAKER 4: Nu, sunt bine. [Neauzit]. 1168 00:50:11,325 --> 00:50:12,200 >> SPEAKER 3: Nu, [neauzit]. 1169 00:50:12,200 --> 00:50:12,700 Au unele. 1170 00:50:12,700 --> 00:50:21,165 1171 00:50:21,165 --> 00:50:22,290 SPEAKER 1: culori diferite. 1172 00:50:22,290 --> 00:50:22,890 SPEAKER 2: OK. 1173 00:50:22,890 --> 00:50:26,690 SPEAKER 1: Deci în cele din urmă ceea ce este nu este reglează culoarea de--