1 00:00:00,000 --> 00:00:03,840 >> [Гуляе музыка] 2 00:00:03,840 --> 00:00:05,770 3 00:00:05,770 --> 00:00:08,690 >> Даг Lloyd: Такім чынам, зараз мы старыя профі на вэб-праграмавання, праўда? 4 00:00:08,690 --> 00:00:12,140 І мы разгледзелі некалькі мовы ў асобных відэа. 5 00:00:12,140 --> 00:00:14,690 А цяпер давайце зробім яшчэ адзін, JavaScript. 6 00:00:14,690 --> 00:00:17,370 >> Першая добрая навіна, JavaScript гэта сучасны праграмавання 7 00:00:17,370 --> 00:00:21,410 мова гэтак жа, як PHP, чые Сінтаксіс з'яўляецца вытворным ад C, 8 00:00:21,410 --> 00:00:22,830 так што гэта добрае месца, каб пачаць. 9 00:00:22,830 --> 00:00:25,880 Гэта прыкладна як стары, як PHP, а таксама, Існуючы каля 20 гадоў. 10 00:00:25,880 --> 00:00:28,600 Ён быў вынайдзены каля у той жа час, як PHP. 11 00:00:28,600 --> 00:00:32,240 І JavaScript на самай справе даволі асноватворнае значэнне для карыстацкага досведу 12 00:00:32,240 --> 00:00:32,740 у Інтэрнэце. 13 00:00:32,740 --> 00:00:34,448 На самай справе, ёсць трох мовах, што я 14 00:00:34,448 --> 00:00:38,480 скажа роду складаюць Карыстальнік вопыт узаемадзеяння 15 00:00:38,480 --> 00:00:42,650 з вэб-сайта, HTML, CSS, JavaScript, і. 16 00:00:42,650 --> 00:00:46,030 І вось зараз давайце пагаворым Крыху пра JavaScript. 17 00:00:46,030 --> 00:00:50,301 >> Дрэнная навіна, хоць, з JavaScript, гэта што ён усталёўвае шмат правілаў для сябе, 18 00:00:50,301 --> 00:00:51,300 а затым разбурае іх. 19 00:00:51,300 --> 00:00:54,010 І JavaScript сапраўды можа быць выгляд выклік, каб даведацца, 20 00:00:54,010 --> 00:00:57,000 таму што гэта ў адрозненне ад C і PHP, якія вельмі структураваныя 21 00:00:57,000 --> 00:01:00,270 і маюць вельмі жорсткія правілы аб тым, як рэчы могуць працаваць. 22 00:01:00,270 --> 00:01:03,690 JavaScript мае выгляд з сталі настолькі гнуткімі 23 00:01:03,690 --> 00:01:06,650 што, магчыма, рэчы не збіраюся працаваць так, як мы чакаем, што яны, 24 00:01:06,650 --> 00:01:09,830 і, магчыма, мы сапраўды не можам даведацца наш першы мова праграмавання 25 00:01:09,830 --> 00:01:10,769 як JavaScript. 26 00:01:10,769 --> 00:01:12,810 Так, можа быць, таму што гэта не ўсталяваць сам нейкія правілы, 27 00:01:12,810 --> 00:01:15,754 і гэта сапраўды не захаванне добрыя звычкі кадавання. 28 00:01:15,754 --> 00:01:18,170 Але цяпер, спадзяюся, мы распрацавалі некаторыя добрыя звычкі кадавання, 29 00:01:18,170 --> 00:01:21,470 і такім чынам мы можам пачаць набег у JavaScript няшмат. 30 00:01:21,470 --> 00:01:25,750 >> Каб запісаць JavaScript, падобны на адкрыцці капіраванне файла C з кропкай C пашырэннем 31 00:01:25,750 --> 00:01:29,770 або PHP файл з пашырэннем кропка PHP, усё, што трэба зрабіць, гэта адкрыць файл 32 00:01:29,770 --> 00:01:31,764 з пашырэннем файла кропка JS. 33 00:01:31,764 --> 00:01:34,430 Мы не павінны мець нейкі адмысловы падзельнікі, як мы рабілі ў PHP. 34 00:01:34,430 --> 00:01:36,750 Такога роду вуглом Кранштэйны знак пытання PHP 35 00:01:36,750 --> 00:01:40,300 што мы прывыклі, што ад шляху, Мы кажам нашым браўзэр, што ў нас ёсць, 36 00:01:40,300 --> 00:01:43,502 JavaScript з'яўляецца ў тым ліку гэта ў HTML тэга, 37 00:01:43,502 --> 00:01:46,210 і мы ўбачым крыху пра як зрабіць, што праз хвіліну. 38 00:01:46,210 --> 00:01:48,210 >> Іншая справа, што робіць JavaScript адрозніваецца, 39 00:01:48,210 --> 00:01:50,580 аднак, з'яўляецца тое, што ён працуе на баку кліента. 40 00:01:50,580 --> 00:01:53,430 Так ўспамінаю з PHP, што мы ніколі не маглі сапраўды ўбачыць 41 00:01:53,430 --> 00:01:57,041 РНР, што падкрэсліў сайта. 42 00:01:57,041 --> 00:01:59,040 Калі мы калі-небудзь разглядаў зыходны код старонкі, мы б толькі 43 00:01:59,040 --> 00:02:02,830 паглядзець HTML, які быў генераваных гэтай PHP. 44 00:02:02,830 --> 00:02:04,900 Але ў JavaScript працуе на баку кліента. 45 00:02:04,900 --> 00:02:06,710 Ваш JavaScript, працуе на вашым кампутары. 46 00:02:06,710 --> 00:02:09,050 І вось чаму вы можаце зрабіць рэчы, як дадаць блокаторы. 47 00:02:09,050 --> 00:02:09,550 Дакладна? 48 00:02:09,550 --> 00:02:12,704 Блакіроўка рэкламы звычайна робіцца забойства усё JavaScript 49 00:02:12,704 --> 00:02:14,370 што працуе на пэўным сайце. 50 00:02:14,370 --> 00:02:19,000 І таму, што ён павінен запусціць на кліенцкім кампутары баку, 51 00:02:19,000 --> 00:02:21,910 вы можаце проста спыніць JavaScript для запуску цалкам. 52 00:02:21,910 --> 00:02:27,030 Гэта таксама азначае, што калі вы выкарыстоўваеце сайт, які ўключае ў сябе JavaScript, 53 00:02:27,030 --> 00:02:32,450 Вы павінны адправіць крыніца JavaScript Код, як частка вашага адказу HTTP 54 00:02:32,450 --> 00:02:34,159 кліенту, калі яны запытваюць іх. 55 00:02:34,159 --> 00:02:35,950 І таму вы можаце не хочаце выкарыстоўваць JavaScript 56 00:02:35,950 --> 00:02:38,395 зрабіць сапраўды адчувальныя рэчы як праходзіць інфармацыі 57 00:02:38,395 --> 00:02:41,020 аб паролях карыстальнікаў спіне і наперад, таму што яны на самой справе 58 00:02:41,020 --> 00:02:45,610 збіраецца атрымаць увесь зыходны код, не толькі HTML, які генеруецца, 59 00:02:45,610 --> 00:02:49,030 такія, як было б у выпадку з скажам PHP. 60 00:02:49,030 --> 00:02:51,620 >> Так як мы ўключаць JavaScript у нашым HTML пачаць? 61 00:02:51,620 --> 00:02:54,520 Ну, падобны на CSS, на самай справе, з'яўляецца свайго роду, як мы робім гэта тут. 62 00:02:54,520 --> 00:02:56,190 З дапамогай CSS мы маем тэгі стыль. 63 00:02:56,190 --> 00:03:00,760 І ўнутры гэтых тэгаў стыляў, мы можам вызначыць ліст CSS стыль. 64 00:03:00,760 --> 00:03:03,450 Аналагічна з JavaScript мы можам адкрыць тэгі сцэнара, 65 00:03:03,450 --> 00:03:06,660 іншы тэг HTML мы не гаварыць аб нашай HTML відэа, 66 00:03:06,660 --> 00:03:09,720 і напісаць JavaScript у паміж гэтымі тэгамі скрыптоў. 67 00:03:09,720 --> 00:03:13,960 Таксама, хоць, як CSS, мы можа звязаць у непрацоўны CSS файлаў 68 00:03:13,960 --> 00:03:15,900 і цягнуць іх у нашай праграме, што шлях. 69 00:03:15,900 --> 00:03:18,280 З дапамогай CSS мы можам таксама, прабачце, з JavaScript 70 00:03:18,280 --> 00:03:23,240 мы можам таксама пазначыць крыніца атрыбут тэга сцэнара 71 00:03:23,240 --> 00:03:25,720 каб звязаць у JavaScript асобна, так што вам не 72 00:03:25,720 --> 00:03:27,680 павінны напісаць яго ў паміж тэгамі сцэнар, мы 73 00:03:27,680 --> 00:03:29,600 можа звязаць яго пры дапамозе што сцэнар тэг, а таксама. 74 00:03:29,600 --> 00:03:33,230 І гэтак жа, як і ў выпадку з CSS дзе мы рэкамендавалі, што, верагодна, 75 00:03:33,230 --> 00:03:36,090 ў вашых інтарэсах, каб напісаць Ваш CSS у асобным файле ў выпадку 76 00:03:36,090 --> 00:03:38,500 Вы павінны змяніць яго, Аналагічна мы рэкамендуем 77 00:03:38,500 --> 00:03:40,720 што вы пішаце JavaScript у асобныя файлы 78 00:03:40,720 --> 00:03:45,460 і выкарыстоўваць крыніца тэгі сцэнара атрыбут, каб звязаць свой JavaScript 79 00:03:45,460 --> 00:03:49,520 ў вашым HTML, вэб-старонкі. 80 00:03:49,520 --> 00:03:52,610 >> Так JavaScript зменныя, мы будзем пачаць гаварыць аб сінтаксісе тут. 81 00:03:52,610 --> 00:03:53,600 І мы пойдзем праз гэты від хутка, 82 00:03:53,600 --> 00:03:56,640 таму што мы зрабілі гэта ў PHP, так усё гэта павінна быць даволі знаёмым. 83 00:03:56,640 --> 00:03:59,490 Так зменныя ў JavaScript з'яўляюцца вельмі падобны на РНР зменныя. 84 00:03:59,490 --> 00:04:03,270 Там няма спецификатор тыпу, і калі вы ўводзіце зменную, 85 00:04:03,270 --> 00:04:05,070 Вы прэфікс з вар ключавое слова. 86 00:04:05,070 --> 00:04:07,750 У PHP мы нешта зрабіць як гэта, знак даляра х. 87 00:04:07,750 --> 00:04:09,950 Вось як мы паказалі пераменная, але няма, мы 88 00:04:09,950 --> 00:04:12,060 не згадваюць тып зменнай наогул. 89 00:04:12,060 --> 00:04:15,124 Мы хацелі б сказаць нешта накшталт Знак даляра х роўны 44, у PHP. 90 00:04:15,124 --> 00:04:17,040 Калі мы рабілі тое Тое ж самае ў JavaScript, 91 00:04:17,040 --> 00:04:19,589 мы б сказалі, вар х роўны 44. 92 00:04:19,589 --> 00:04:22,780 Так вар накшталт нашага шляху ўвядзення зменнай. 93 00:04:22,780 --> 00:04:26,850 Гэта, магчыма, трохі больш зразумелым чым проста даляра зменнай знакам. 94 00:04:26,850 --> 00:04:29,080 >> Зноў жа, паколькі няма ніякіх тыпы дадзеных, мы маглі б зрабіць гэта 95 00:04:29,080 --> 00:04:34,490 з любым тыпам дадзеных, радкі, што-небудзь яшчэ ўсё будзе вар. 96 00:04:34,490 --> 00:04:37,260 Ўмоўныя, усе нашы старыя сябры з C і PHP 97 00:04:37,260 --> 00:04:41,640 па-ранейшаму даступныя, так што ў нас ёсць, калі інакш, калі, інакш, выключальнік і пытанне 98 00:04:41,640 --> 00:04:42,240 знак двукроп'я. 99 00:04:42,240 --> 00:04:45,890 Перамыкач застаючыся гнуткім, як гэта быў у PHP, але ўсе з іх вы 100 00:04:45,890 --> 00:04:46,930 знаёмыя з цяпер. 101 00:04:46,930 --> 00:04:49,900 І сапраўды гэтак жа з пятлі старыя фаварыты час, 102 00:04:49,900 --> 00:04:52,700 зрабіць час, і па-ранейшаму даступныя для нас. 103 00:04:52,700 --> 00:04:55,880 Так, мы ўжо ведаем шмат з Асноўны JavaScript роду асноў 104 00:04:55,880 --> 00:05:01,800 проста ў сілу таго, зусім няшмат веды зараз аб З і PHP. 105 00:05:01,800 --> 00:05:03,670 >> А як наконт функцый у JavaScript? 106 00:05:03,670 --> 00:05:08,199 Ну, падобны на PHP кожны функцыя ўведзеныя з функцыяй ключавое слова. 107 00:05:08,199 --> 00:05:10,740 Вы кажаце, функцыі, а затым вам пачаць вызначыць сваю функцыю. 108 00:05:10,740 --> 00:05:12,531 Што крыху адрозніваецца аб JavaScript, 109 00:05:12,531 --> 00:05:15,700 хоць гэта здольнасць мець тое, што называецца ананімнай функцыяй. 110 00:05:15,700 --> 00:05:18,880 Такім чынам, вы можаце вызначыць функцыі якія не маюць назвы. 111 00:05:18,880 --> 00:05:21,222 Гэта тое, што мы сапраўды не бачыў раней. 112 00:05:21,222 --> 00:05:23,430 Мы сапраўды выкарыстоўваць канцэпцыю з ананімнай функцыі 113 00:05:23,430 --> 00:05:27,880 крыху пазней у гэтым відэа, таму што гэта будзе 114 00:05:27,880 --> 00:05:31,530 зрабіць трохі больш сэнсу ў кантэксце калі мы бачым яго ў канкрэтнай сітуацыі 115 00:05:31,530 --> 00:05:33,120 што я створаны тут. 116 00:05:33,120 --> 00:05:35,710 Але давайце проста паглядзім на якой простага JavaScript 117 00:05:35,710 --> 00:05:37,850 функцыя можа выглядаць. 118 00:05:37,850 --> 00:05:40,610 >> Так што я пайшоў наперад і адкрыў свой CS50 IDE 119 00:05:40,610 --> 00:05:43,690 і я ўжо запускаць Apache каб пачаць мой сервер працуе. 120 00:05:43,690 --> 00:05:46,800 І ў мяне ёсць гэты файл адкрытае называецца home.html. 121 00:05:46,800 --> 00:05:48,330 І я буду павялічваць трохі тут. 122 00:05:48,330 --> 00:05:52,090 І ў прынцыпе, вы можаце бачыць Home.html гэта проста куча кнопак. 123 00:05:52,090 --> 00:05:55,291 І я сцвярджаючы у верхняй тут што гэта раздзел JavaScript 124 00:05:55,291 --> 00:05:55,790 матэрыялы. 125 00:05:55,790 --> 00:05:59,490 Такім чынам, ёсць куча кнопак тут, але тое, што гэтыя кнопкі на самай справе? 126 00:05:59,490 --> 00:06:03,662 >> Ну, мы накіруемся да майго IED, і я home.html адкрыць тут. 127 00:06:03,662 --> 00:06:05,620 У самым пачатку, вось дзе я звязваючы 128 00:06:05,620 --> 00:06:07,500 ва ўсіх маіх зыходных файлаў JavaScript. 129 00:06:07,500 --> 00:06:08,000 Дакладна? 130 00:06:08,000 --> 00:06:12,440 Так што я anonymous.js, clock.js, Я выкарыстоўваю атрыбут крыніцы 131 00:06:12,440 --> 00:06:14,440 ў тэг сцэнара, каб звязаць у файле. 132 00:06:14,440 --> 00:06:18,660 Так што я не напісаў ні JavaScript непасрэдна ў гэтым файле, 133 00:06:18,660 --> 00:06:21,790 але я выцягнуў ва ўсіх JavaScript я напісаў асобна. 134 00:06:21,790 --> 00:06:24,540 І калі мы пракруціць ўніз тут, гэта ўсе павінны выглядаць крыху знаёмыя 135 00:06:24,540 --> 00:06:27,090 з трохі новага сінтаксісу. 136 00:06:27,090 --> 00:06:32,655 Мы маем тут тэг загалоўка для функцыі і затым кнопку. 137 00:06:32,655 --> 00:06:35,530 У мяне ёсць ўваходу, кнопка тыпу, і, мабыць, калі я націскаю яго, 138 00:06:35,530 --> 00:06:38,130 Я збіраюся патэлефанаваць некаторым функцыя сігналу трывога дату. 139 00:06:38,130 --> 00:06:41,792 І гэта, як мы можам роду пераблытаць трохі JavaScript і HTML. 140 00:06:41,792 --> 00:06:44,500 Яны на самой справе гуляюць даволі прыгожа разам, і так, па-відаць, калі 141 00:06:44,500 --> 00:06:48,730 Я націсніце на гэтую кнопку, я збіраюся каб выклікаць некаторыя функцыі абвесткі дату. 142 00:06:48,730 --> 00:06:53,660 І сапраўды гэтак жа ёсць я вызначыў паводзін для ўсіх іншых кнопак, якія 143 00:06:53,660 --> 00:06:56,440 знаходзяцца на гэтай старонцы home.html, якія мы будзем трымаць вяртання 144 00:06:56,440 --> 00:06:59,172 каб у ходзе гэтага відэа. 145 00:06:59,172 --> 00:07:00,880 Але давайце вернемся на тут і зірнуць 146 00:07:00,880 --> 00:07:03,850 у clock.js, які з'яўляецца Файл JavaScript, што я 147 00:07:03,850 --> 00:07:07,370 пісаў, што ёсць гэтая першая функцыя мы збіраемся, каб зірнуць на. 148 00:07:07,370 --> 00:07:11,630 Як вы можаце бачыць, я пачынаю свой JavaScript функцыянаваць з функцыяй ключавых слоў, 149 00:07:11,630 --> 00:07:14,560 і я даў гэты імя, гэта называецца абвесткі Дата. 150 00:07:14,560 --> 00:07:18,710 Унутры ёсць, я, здаецца, стварыць Новы лакальная пераменная называецца бягучая дата. 151 00:07:18,710 --> 00:07:21,500 І я збіраюся прызначыць роўнае на новую дату. 152 00:07:21,500 --> 00:07:24,430 І мы маглі б атрымаць у шмат дэталь, як да таго, што дата, 153 00:07:24,430 --> 00:07:27,060 і сапраўды настолькі JavaScript вялікі, што мы не можам 154 00:07:27,060 --> 00:07:28,330 ахапіць усё ў адным відэа. 155 00:07:28,330 --> 00:07:32,220 Але досыць сказаць, гэта будзе вярнуцца да мне элемент дадзеных, які 156 00:07:32,220 --> 00:07:35,470 Інкапсулюйце бягучую дату і час. 157 00:07:35,470 --> 00:07:39,100 Я захоўвання, што ў зменнай, што я па-відаць, збіраецца папярэдзіць бягучую дату. 158 00:07:39,100 --> 00:07:41,300 >> Ну, тое, што робіць папярэджанне бягучая дата выглядае? 159 00:07:41,300 --> 00:07:46,460 Давайце зірнем на сам файл таму на ў акне браўзэра. 160 00:07:46,460 --> 00:07:49,551 Такім чынам, яшчэ раз, гэта кнопка, што я звязалі з гэтай, па імені функцыі. 161 00:07:49,551 --> 00:07:51,800 І я націсніце яго там і паглядзіце, што ён зрабіў, гэта насцярожыла. 162 00:07:51,800 --> 00:07:56,140 Гэта выскачыў гэты від скрынкі, кажучы што мяне бягучы час, па-відаць, 163 00:07:56,140 --> 00:07:59,370 гэта 4 лістапада ў 10:43:43 раніцы. 164 00:07:59,370 --> 00:08:02,345 І калі я націскаю яго зноў, цяпер гэта праз некалькі секунд, праўда? 165 00:08:02,345 --> 00:08:03,720 Дык вось усё гэта робіць функцыя. 166 00:08:03,720 --> 00:08:07,670 Калі я націскаю гэтую кнопку, яго ўсплывае папераджальнае паведамленне для мяне. 167 00:08:07,670 --> 00:08:13,806 168 00:08:13,806 --> 00:08:15,690 Так што на самай справе не занадта шмат, каб функцыі 169 00:08:15,690 --> 00:08:19,110 што адрозніваецца ад PHP, проста трохі новага сінтаксісу 170 00:08:19,110 --> 00:08:22,500 які пастаўляецца з працы з JavaScript. 171 00:08:22,500 --> 00:08:24,650 >> Масівы ў JavaScript з'яўляюцца даволі простая. 172 00:08:24,650 --> 00:08:27,200 Каб абвясціць масіў, вы карыстаецеся сінтаксіс квадратных дужак 173 00:08:27,200 --> 00:08:30,090 што мы знаёмыя з PHP. 174 00:08:30,090 --> 00:08:33,432 І падобна на PHP, мы Таксама можна змешваць тыпы дадзеных. 175 00:08:33,432 --> 00:08:35,140 Так што гэта масіў, і з гэтых масіваў будзе 176 00:08:35,140 --> 00:08:36,960 зусім законным JavaScript. 177 00:08:36,960 --> 00:08:42,500 Адзін вось і ўсё цэлыя лікі, і адзін, што змешваюць розныя тыпы дадзеных. 178 00:08:42,500 --> 00:08:45,020 >> Што-то вельмі розныя у JavaScript, праўда? 179 00:08:45,020 --> 00:08:47,020 Гэта паняцце аб'екта. 180 00:08:47,020 --> 00:08:50,240 Так што, магчыма, вы чулі пра аб'ектна-арыентаванага праграмавання. 181 00:08:50,240 --> 00:08:53,370 Мы не робім шмат што з гэтага ў CS50, але мы зробім трохі пра яго 182 00:08:53,370 --> 00:08:55,670 Тут у кантэксце JavaScript. 183 00:08:55,670 --> 00:08:59,100 Цяпер JavaScript мае магчымасць паводзіць сябе як аб'ектна-арыентаванага праграмавання 184 00:08:59,100 --> 00:09:02,615 мовай, але ён сам не выключна аб'ектна-арыентаваны 185 00:09:02,615 --> 00:09:03,490 мова праграмавання. 186 00:09:03,490 --> 00:09:05,281 І гэта зноў прыходзіць таму, чаму я сказаў, гэта 187 00:09:05,281 --> 00:09:10,610 можа быць вельмі складаным, каб даведацца JavaScript, як ваш першы праграмавання 188 00:09:10,610 --> 00:09:13,890 Мова, таму што гэта не сапраўды падыходзяць канкрэтнай парадыгмы. 189 00:09:13,890 --> 00:09:16,430 >> З іншага боку гэта функцыянальны мова праграмавання. 190 00:09:16,430 --> 00:09:22,270 Калі мы хочам, каб, функцыі накшталт вялікага боса чалавека, праўда? 191 00:09:22,270 --> 00:09:24,410 Яны дыктуюць, што адбываецца ўсё астатняе. 192 00:09:24,410 --> 00:09:26,600 Мы хочам змяніць зменныя, мы называем функцыі. 193 00:09:26,600 --> 00:09:28,220 Мы робім тое, да функцый. 194 00:09:28,220 --> 00:09:31,250 Аб'екты замест, У аб'ектна-арыентаванай мове, 195 00:09:31,250 --> 00:09:35,937 аб'екты накшталт стаць зоркай і функцыі становяцца свайго роду другасным. 196 00:09:35,937 --> 00:09:38,270 Але тое, што з'яўляецца аб'ектам, тое, што гэта паняцце аб'екта? 197 00:09:38,270 --> 00:09:40,880 Ну, калі гэта дапаможа, думаю, Пра гэта на першага роду 198 00:09:40,880 --> 00:09:44,540 з, як структуры C або структуры што мы даведаліся раней. 199 00:09:44,540 --> 00:09:47,430 У C, структура змяшчае лік палёў, 200 00:09:47,430 --> 00:09:51,174 і, магчыма, цяпер мы маглі б пачаць называць гэтыя ўласцівасці палёў. 201 00:09:51,174 --> 00:09:53,590 Але ўласцівасці ніколі сапраўды стаяць на сваіх уласных, ці не так? 202 00:09:53,590 --> 00:09:56,410 Калі я вызначыць структуру для аўтамабіля як гэта з наступнымі двума 203 00:09:56,410 --> 00:10:00,750 поля або ўласцівасці, адзін А.М. лік за год аўтамабіля 204 00:10:00,750 --> 00:10:04,290 і яшчэ 10 сімвалаў Радок для мадэлі аўтамабіля, 205 00:10:04,290 --> 00:10:07,150 Я магу сказаць, што нешта накшталт гэтага, Я магу аб'явіць новую зменную 206 00:10:07,150 --> 00:10:10,080 тыпу структура аўтамабіля Херб. 207 00:10:10,080 --> 00:10:13,730 І тады я магу нешта сказаць як herbie.year роўная 1,963, 208 00:10:13,730 --> 00:10:15,850 і herbie.model роўная Beetle. 209 00:10:15,850 --> 00:10:17,000 Гэта нармальна. 210 00:10:17,000 --> 00:10:19,680 Я выкарыстоўваю поля ў кантэкст структуры, 211 00:10:19,680 --> 00:10:22,290 але я ніколі не мог проста нешта накшталт гэтага. 212 00:10:22,290 --> 00:10:22,790 Дакладна? 213 00:10:22,790 --> 00:10:26,836 Я не магу выкарыстоўваць імя поля залежыць ад структуры. 214 00:10:26,836 --> 00:10:28,210 Гэта свайго роду фундаментальнай рэчы. 215 00:10:28,210 --> 00:10:32,990 >> Так поля з'яўляецца асноватворнае значэнне для структуры Сі 216 00:10:32,990 --> 00:10:39,050 вельмі падобныя на ўласцівасці быцця асноватворнае значэнне для аб'ектаў JavaScript. 217 00:10:39,050 --> 00:10:42,080 Але тое, што робіць іх Асабліва цікава 218 00:10:42,080 --> 00:10:46,230 з'яўляецца тое, што аб'екты могуць таксама мець што называюцца метады, якія сапраўды 219 00:10:46,230 --> 00:10:50,730 проста прыгожае слова для функцый, якія ўласцівыя аб'екту, а таксама. 220 00:10:50,730 --> 00:10:55,340 Так што гэта функцыя, якая можа быць толькі выклікаецца ў кантэксце аб'екта. 221 00:10:55,340 --> 00:10:59,200 Толькі аб'ект, які вызначыў гэтая функцыя ўнутры ІТС, 222 00:10:59,200 --> 00:11:02,020 калі вы думаеце пра структура, функцыя 223 00:11:02,020 --> 00:11:05,720 вызначаецца ў тых вызначэнні Фігурныя дужкі структуры. 224 00:11:05,720 --> 00:11:07,980 Дык гэта значыць толькі тое нешта структуры. 225 00:11:07,980 --> 00:11:10,960 І гэта свайго роду тое, што мы робім Тут з аб'ектамі і метадамі. 226 00:11:10,960 --> 00:11:13,580 Гэта ў асноўным, як мы вызначэння функцый, 227 00:11:13,580 --> 00:11:16,670 мае сэнс толькі на канкрэтны аб'ект, і таму мы 228 00:11:16,670 --> 00:11:19,440 назваць гэта метадам аб'екта. 229 00:11:19,440 --> 00:11:23,180 І мы ніколі не можам назваць гэта Функцыя залежыць ад аб'екта, 230 00:11:23,180 --> 00:11:29,260 гэтак жа, як мы не можам сказаць, год ці мадэль залежыць ад структуры ў З 231 00:11:29,260 --> 00:11:32,300 >> Так функцыянальнае праграмаванне парадыгмы выглядаць так. 232 00:11:32,300 --> 00:11:35,450 Функцыя, а затым, калі вы праходзіце ў аб'ект у якасці параметру. 233 00:11:35,450 --> 00:11:38,650 У аб'ектна-арыентаванага праграмавання мовы, такога роду атрымлівае 234 00:11:38,650 --> 00:11:43,464 перавярнуўся, і мы будзем думаць пра гэта, як гэта, object.function. 235 00:11:43,464 --> 00:11:45,380 Так ён накшталт гэтага кропка Аператар зноў маючы на ​​ўвазе 236 00:11:45,380 --> 00:11:49,540 што гэта свайго роду маёмасці або атрыбут самога аб'екта. 237 00:11:49,540 --> 00:11:53,240 Але гэта тое, што аб'ект арыентаваная мова праграмавання 238 00:11:53,240 --> 00:11:57,150 можа зрабіць, каб зрабіць функцыю патэлефанаваць па метадзе, зноў, што 239 00:11:57,150 --> 00:12:00,260 гэта проста спецыяльная слова для функцыі што ўласціва аб'екту. 240 00:12:00,260 --> 00:12:03,440 Гэта тое, што, што Сінтаксіс можа выглядаць. 241 00:12:03,440 --> 00:12:09,360 І таму мы пачнем бачыць некаторыя з гэта ў кантэксце JavaScript. 242 00:12:09,360 --> 00:12:12,470 >> Вы таксама можаце думаць аб аб'екце накшталт як асацыятыўны масіў, 243 00:12:12,470 --> 00:12:14,160 які мы знаёмыя з PHP. 244 00:12:14,160 --> 00:12:17,720 Запомніць асацыятыўны масіў дазваляе каб у нас пары ключ-значэнне, а не 245 00:12:17,720 --> 00:12:23,040 мець індэксаў 0, адзін, два, тры, і гэтак далей, як мы прывыклі з C 246 00:12:23,040 --> 00:12:23,940 масівы. 247 00:12:23,940 --> 00:12:27,472 Асацыятыўныя масівы можна супаставіць словы, напрыклад, у відэа PHP, 248 00:12:27,472 --> 00:12:29,180 мы гаворым пра Начынне піцы. 249 00:12:29,180 --> 00:12:31,180 І такім чынам, мы мелі масіў званыя піцы, і мы 250 00:12:31,180 --> 00:12:36,670 быў сыр быў ключ і $ 8.99 быў значэнне, а затым пепперони быў ключавым, 251 00:12:36,670 --> 00:12:39,190 $ 9.99 быў значэнне, і гэтак далей. 252 00:12:39,190 --> 00:12:43,300 І такім чынам мы можам таксама падумаць аб аб'ект роду падобныя на асацыятыўнай 253 00:12:43,300 --> 00:12:43,840 масівам. 254 00:12:43,840 --> 00:12:47,020 І гэты сінтаксіс тут будзе ствараць новы аб'ект 255 00:12:47,020 --> 00:12:50,950 называецца Херб з двума ўласцівасці ўнутры яго. 256 00:12:50,950 --> 00:12:57,310 Год, які прысвойваецца значэнне 1963, і мадэль, якая прысвойваецца радок 257 00:12:57,310 --> 00:12:58,140 Жук. 258 00:12:58,140 --> 00:13:01,770 >> І звярніце ўвагу, вось што я выкарыстоўваю адзінкавыя двукоссі ў JavaScript. 259 00:13:01,770 --> 00:13:05,570 Вы можаце выкарыстоўваць адзінарныя або двайныя двукоссі калі вы кажаце пра радках. 260 00:13:05,570 --> 00:13:07,772 Гэта проста традыцыйна справа, што ў большасці выпадкаў 261 00:13:07,772 --> 00:13:10,230 калі вы пішаце JavaScript, вы проста выкарыстоўваць адзінарныя двукоссі. 262 00:13:10,230 --> 00:13:15,050 Але я мог бы выкарыстаць падвойныя двукоссі тут, і што б выдатна, як добра. 263 00:13:15,050 --> 00:13:17,470 >> Так памятаем, як у PHP мы мелі гэта паняцце 264 00:13:17,470 --> 00:13:22,730 А для кожнага цыклу, што дазволіць нам перабраць усе значэння ключа 265 00:13:22,730 --> 00:13:25,270 пары асацыятыўнай Масіў, таму што мы 266 00:13:25,270 --> 00:13:29,050 не маюць гэтую здольнасць, каб перабіраць праз 0, адзін, два, тры, чатыры, 267 00:13:29,050 --> 00:13:30,710 і гэтак далей? 268 00:13:30,710 --> 00:13:35,010 JavaScript мае нешта вельмі падобнае, але гэта не называецца для кожнага цыклу, 269 00:13:35,010 --> 00:13:38,960 гэта называецца па завесамі. 270 00:13:38,960 --> 00:13:42,890 Так што, калі я сказаў мне, як Гэта, вар ключа ў аб'екце, 271 00:13:42,890 --> 00:13:48,670 гэта свайго роду падобныя на кажучы для кожнага нешта неяк. 272 00:13:48,670 --> 00:13:53,850 Але ўсё, што я раблю тут ітэрацыі праз усе ключы маёй аб'екта. 273 00:13:53,850 --> 00:13:56,070 І ўнутры фігурных дужкі там, я б 274 00:13:56,070 --> 00:14:03,410 выкарыстоўваць аб'ект ключ квадратныя дужкі для абазначэння да значэння ў гэтым ключавым месцы. 275 00:14:03,410 --> 00:14:05,400 >> Акрамя таго, існуе нават іншы падыход. 276 00:14:05,400 --> 00:14:10,880 Калі я проста клапоцяцца толькі пра значэння, я магу сказаць, ключ аб'екта, 277 00:14:10,880 --> 00:14:12,360 і проста выкарыстоўваць ключ ўнутры. 278 00:14:12,360 --> 00:14:17,240 Такім чынам, для вар ключа ў аб'ект, у мяне ёсць выкарыстоўваць аб'ект квадратныя дужкі 279 00:14:17,240 --> 00:14:19,340 Ключ ўнутры цыклу. 280 00:14:19,340 --> 00:14:24,580 Для вар ключ аб'екта, я магу проста выкарыстоўваць ключ ўнутры цыклу, 281 00:14:24,580 --> 00:14:29,040 таму што я проста спецыяльна гаварыць пра каштоўнасці там. 282 00:14:29,040 --> 00:14:32,630 >> Так што давайце, можа быць, узяць паглядзіце на розніцу 283 00:14:32,630 --> 00:14:35,670 проста хутка паказаць вам, розніца паміж чатыры 284 00:14:35,670 --> 00:14:40,730 у сабе і для якія не з вельмі спецыфічным Масіў, які мы маем тут, тыдзень масіў. 285 00:14:40,730 --> 00:14:43,616 Так што я павінен знайсці новы масіў што я напоўнены сямі радкоў, 286 00:14:43,616 --> 00:14:46,240 Панядзелак, аўторак, серада, Чацвер, пятніца, субота, нядзеля. 287 00:14:46,240 --> 00:14:50,530 І я хачу, каб у цяперашні час ітэрацыі праз гэты масіў, 288 00:14:50,530 --> 00:14:53,090 раздрукаваць пэўную інфармацыю. 289 00:14:53,090 --> 00:14:58,780 Калі я выкарыстоўваю для цыклу ў раздрукаваць інфармацыю, 290 00:14:58,780 --> 00:15:00,710 што вы думаеце, што я збіраюся атрымаць? 291 00:15:00,710 --> 00:15:01,710 Ну, давайце зірнем. 292 00:15:01,710 --> 00:15:05,300 І перш, чым мы пераскочыць да майго акна браўзэра, 293 00:15:05,300 --> 00:15:08,090 проста ведаю, што console.log з'яўляецца свайго роду адзін 294 00:15:08,090 --> 00:15:10,630 спосаб рабіць друку F у JavaScript. 295 00:15:10,630 --> 00:15:12,040 Але тое, што кансоль? 296 00:15:12,040 --> 00:15:14,940 Ну, гэта тое, што мы збіраемся ісці зірнуць на прама цяпер. 297 00:15:14,940 --> 00:15:16,850 >> ОК, так што мы сюды ў маім акне браўзэра, 298 00:15:16,850 --> 00:15:19,410 і я збіраюся адкрыць да маіх інструментаў распрацоўніка. 299 00:15:19,410 --> 00:15:22,290 Зноў жа, я проста націскаючы F12 каб адкрыць інструменты распрацоўніка. 300 00:15:22,290 --> 00:15:25,670 І заўважце, што тут на топ я выбраў кансоль. 301 00:15:25,670 --> 00:15:28,480 Так што гэта паняцце з кансолі распрацоўніка, 302 00:15:28,480 --> 00:15:30,500 і гэта дазволіць нам друкаваць інфармацыю з, 303 00:15:30,500 --> 00:15:33,000 накшталт тэрмінала, але як вы ўбачыце крыху пазней, 304 00:15:33,000 --> 00:15:37,720 мы таксама можам ўвесці інфармацыю ў ўзаемадзейнічаць з нашай вэб-старонцы. 305 00:15:37,720 --> 00:15:42,320 Я збіраюся павялічыць трохі тут, і я збіраюся Цяпер націсніце на для тэсту ст. 306 00:15:42,320 --> 00:15:45,230 І чатыры test-- Я не збіраюся паказаць вам код для яго прама зараз, 307 00:15:45,230 --> 00:15:47,479 але вы атрымаеце яго, калі вы спампаваць зыходны код, які 308 00:15:47,479 --> 00:15:50,380 звязана з гэтай video-- Проста для завесы ў 309 00:15:50,380 --> 00:15:52,610 што мы бачылі толькі Секунду назад на слайдзе. 310 00:15:52,610 --> 00:15:54,810 >> Так што я збіраюся пстрычка, які Кнопка і тут, 311 00:15:54,810 --> 00:15:58,440 вось тое, што друкуецца ў Кансоль, 0, адзін, два, тры, чатыры, пяць, 312 00:15:58,440 --> 00:15:58,940 шэсць. 313 00:15:58,940 --> 00:16:02,490 Я не друкаваць інфармацыю ўнутры гэтых месцах масіва, 314 00:16:02,490 --> 00:16:05,180 таму што я выкарыстаў для ў пятлі. 315 00:16:05,180 --> 00:16:10,670 І ў целе цыклу я проста раздрукаваць ключ не прымаю ключ. 316 00:16:10,670 --> 00:16:18,600 Але калі цяпер я ачысціць кансоль, і я пераключыцца на для тэсту, і чатыры з цеста 317 00:16:18,600 --> 00:16:22,500 Я кажу, што выкарыстоўваць для завесы замест гэтага і раздрукаваць ключ, 318 00:16:22,500 --> 00:16:28,079 калі я націсну, што цяпер я атрымліваю фактычныя элементы ўнутры майго аб'екта 319 00:16:28,079 --> 00:16:29,120 ці мой масіў у гэтым выпадку. 320 00:16:29,120 --> 00:16:31,760 Мой масіў дзён тыдня. 321 00:16:31,760 --> 00:16:33,480 Я раздрукаваў панядзелак, Аўторак, серада. 322 00:16:33,480 --> 00:16:36,930 Так што розніца паміж а пры ў пятлі, якая выводзіць 323 00:16:36,930 --> 00:16:43,410 толькі ключы, калі вы проста выкарыстоўваць ключ ўнутры цела цыкла, 324 00:16:43,410 --> 00:16:46,850 і для завесы, якая друкуе з значэнняў, калі вы выкарыстоўваеце толькі 325 00:16:46,850 --> 00:16:48,870 Ключ ўнутры цела цыклу. 326 00:16:48,870 --> 00:16:52,380 >> Добра, як мы цяпер пачынаем канкатэнацыі радкоў і, магчыма, змешваць 327 00:16:52,380 --> 00:16:57,220 некаторыя зменныя з інтэрпаляцыяй як мы былі ў стане зрабіць у PHP? 328 00:16:57,220 --> 00:16:59,410 Ну, мы даволі добра знаёмыя з гэтым з PHP. 329 00:16:59,410 --> 00:17:04,109 Гэта, як мы хацелі б зрабіць гэта з дапамогай кропка аператар для аб'яднання радкоў. 330 00:17:04,109 --> 00:17:06,260 У JavaScript, хоць, мы на самай справе выкарыстаць нешта 331 00:17:06,260 --> 00:17:09,290 называецца плюс аператар, які гэта, можа быць, нават трохі больш 332 00:17:09,290 --> 00:17:10,470 інтуітыўна, ці не так? 333 00:17:10,470 --> 00:17:12,609 Мы дадаем кучу радкоў разам. 334 00:17:12,609 --> 00:17:14,520 Такім чынам, давайце галаву назад і ўбачыць, што гэта 335 00:17:14,520 --> 00:17:18,693 будзе друкаваць, калі мы спрабуем вывесці уся інфармацыя ў тыдзень масіва. 336 00:17:18,693 --> 00:17:20,859 Усе правы, таму ў тут пад канкатэнацыі, 337 00:17:20,859 --> 00:17:24,822 У мяне ёсць два варыянты, радок будынак V1 і затым радок будынак V2. 338 00:17:24,822 --> 00:17:26,530 І мы ўбачым, чаму мы трэба V2 у секунду. 339 00:17:26,530 --> 00:17:28,610 Але я збіраюся націснуць на Радок будынак V1, які 340 00:17:28,610 --> 00:17:30,360 гэта код, які мы былі толькі зірнуць на, 341 00:17:30,360 --> 00:17:32,980 console.log з усімі плюсамі. 342 00:17:32,980 --> 00:17:35,910 Давайце паглядзім, калі друкуецца тое, што мы чакалі. 343 00:17:35,910 --> 00:17:39,939 >> Панядзелак дзень нумар 01 тыдня, Аўторак, дзень нумар 11 у тыдзень. 344 00:17:39,939 --> 00:17:41,730 Ну, што я спрабаваў там рабіць было атрымаць 345 00:17:41,730 --> 00:17:46,280 гэта раздрукаваць панядзелак, дзень нумар Адзін з іх, аўторак дзень нумар два. 346 00:17:46,280 --> 00:17:50,140 Але, падобна, я заўсёды друку адну. 347 00:17:50,140 --> 00:17:51,260 Ну, чаму ж? 348 00:17:51,260 --> 00:17:55,600 Ну, аказваецца, яшчэ раз зірнуць ў гэтай маленькай фрагменце кода тут. 349 00:17:55,600 --> 00:18:00,160 Звярніце ўвагу, што мы выкарыстоўваем плюс аператар у двух розных кантэкстах. 350 00:18:00,160 --> 00:18:03,221 >> І так вось, дзе магчыма ўсё што мы накшталт казалі, 351 00:18:03,221 --> 00:18:03,970 О, гэта так выдатна. 352 00:18:03,970 --> 00:18:05,910 Мы не займаемся з тыпамі дадзеных больш. 353 00:18:05,910 --> 00:18:08,220 Але вось дзе то што мы губляем тыпы дадзеных 354 00:18:08,220 --> 00:18:10,960 можа на самай справе быць трохі праблемы для нас. 355 00:18:10,960 --> 00:18:16,260 Цяпер, што аператар плюс выкарыстоўваецца для канкатэнацыі радкоў і складання лікаў 356 00:18:16,260 --> 00:18:19,550 разам, JavaScript мае каб зрабіць свой лепшы здагадка 357 00:18:19,550 --> 00:18:22,030 а тое, што я хачу, каб гэта зрабіць для мяне. 358 00:18:22,030 --> 00:18:23,900 І ў гэтым выпадку, гэта не адгадаў. 359 00:18:23,900 --> 00:18:29,340 Гэта проста счапляюцца дзень, які будзе 0, адзін, два, тры, чатыры, пяць ці шэсць, 360 00:18:29,340 --> 00:18:32,060 і затым ён проста аб'ядноўваюцца што і тады злучаюцца сябар. 361 00:18:32,060 --> 00:18:35,020 Гэта на самай справе не дадаць іх разам. 362 00:18:35,020 --> 00:18:37,320 І таму гэтыя мовы, PHP і JavaScript, 363 00:18:37,320 --> 00:18:39,196 што абстрагуюцца гэта паняцце тыпаў, 364 00:18:39,196 --> 00:18:40,820 Вы не павінны мець справу з ім больш. 365 00:18:40,820 --> 00:18:43,600 Яны да гэтага часу тыпы пад капотам. 366 00:18:43,600 --> 00:18:46,780 І мы можам, у сітуацыях, як гэта, выкарыстоўваць гэты факт 367 00:18:46,780 --> 00:18:49,240 кажучы нешта як можа быць, гэта, што 368 00:18:49,240 --> 00:18:53,210 кажа JavaScript, да чынам, ставіцца да гэтага як цэлае, 369 00:18:53,210 --> 00:18:57,100 не разглядаць яго як радок, нават хоць мы разам радкоў змешвання 370 00:18:57,100 --> 00:18:58,940 і цэлыя тут. 371 00:18:58,940 --> 00:19:02,204 >> Гэта проста адна з тых рэчаў што, здаецца, настолькі вялікі, у кантэксце 372 00:19:02,204 --> 00:19:04,120 што мы не павінны справу з тыпамі больш, 373 00:19:04,120 --> 00:19:05,828 але часам вы будзеце сутыкнецеся з сітуацыяй, 374 00:19:05,828 --> 00:19:09,110 дакладна як гэта, дзе тое, што Вы не павінны кантраляваць тыпы 375 00:19:09,110 --> 00:19:11,220 можа мець непрыемныя наступствы на вас калі вы не будзеце асцярожныя. 376 00:19:11,220 --> 00:19:18,285 І таму, калі мы поп-зваротна да IDE, я збіраецца ачысціць свой пульт зноў, 377 00:19:18,285 --> 00:19:20,660 і я збіраюся націснуць радок Будынак другой версіі, якая 378 00:19:20,660 --> 00:19:23,052 дзе я выкарыстоўваць гэтую функцыю разбору Int. 379 00:19:23,052 --> 00:19:25,260 Зараз гэта раздрукоўкі Інфармацыя, што я чакаў. 380 00:19:25,260 --> 00:19:29,330 Дзень нумар адзін у панядзелак, аўторак дзень нумар два, і гэтак далей. 381 00:19:29,330 --> 00:19:31,170 >> Такім чынам, давайце пагаворым пра функцыі зноў. 382 00:19:31,170 --> 00:19:34,790 Я абяцаў, што мы будзе казаць аб ананімнага функцыі, і зараз кантэкст, што 383 00:19:34,790 --> 00:19:36,360 нарэшце, прыбыў. 384 00:19:36,360 --> 00:19:39,980 Таму, перш чым мы гэта зробім, давайце зноў казаць аб масівах на секунду. 385 00:19:39,980 --> 00:19:42,120 Так масівы ўяўляюць сабой асаблівы Выпадак аб'екта. 386 00:19:42,120 --> 00:19:45,180 На самай справе, усё ў JavaScript на самай справе аб'ект. 387 00:19:45,180 --> 00:19:47,190 Так функцыі з'яўляюцца Асаблівы выпадак аб'екта, 388 00:19:47,190 --> 00:19:49,770 цэлыя лікі спецыяльная выпадак аб'екта, 389 00:19:49,770 --> 00:19:52,152 але масівы спецыяльна маюць шэраг метадаў. 390 00:19:52,152 --> 00:19:55,110 Памятаеце, таму што яны аб'ектаў, яны могуць мець ўласцівасці і метады. 391 00:19:55,110 --> 00:19:58,600 Яны маюць шэраг метадаў, якія могуць быць ужытыя да гэтых аб'ектаў. 392 00:19:58,600 --> 00:20:01,197 Там гэта метад, званы памер, array.size, 393 00:20:01,197 --> 00:20:03,030 якія будуць вяртацца ў Вы, як вы маглі б чакаць 394 00:20:03,030 --> 00:20:05,120 колькасць элементаў у масіве. 395 00:20:05,120 --> 00:20:08,480 array.pop, накшталт як наша паняцце з'яўляюцца ад 396 00:20:08,480 --> 00:20:11,110 стэка, калі вы памятаеце, з нашага стэкі відэа, 397 00:20:11,110 --> 00:20:13,810 выдаляе апошні элемент з масіва. 398 00:20:13,810 --> 00:20:17,110 Array.push дадае новы элемент да канца масіў. 399 00:20:17,110 --> 00:20:20,910 Array.shift з'яўляецца свайго роду як DQ, гэта зрошчвання з 400 00:20:20,910 --> 00:20:23,610 самы першы элемент масіва. 401 00:20:23,610 --> 00:20:27,549 >> Але ёсць і іншая спецыяльная Спосаб масіва называецца карту. 402 00:20:27,549 --> 00:20:29,340 І гэта свайго роду цікавая канцэпцыя. 403 00:20:29,340 --> 00:20:30,930 Так што ідэя карце? 404 00:20:30,930 --> 00:20:33,880 Вы на самой справе ўбачыце, што гэта у шэрагу іншых моў, 405 00:20:33,880 --> 00:20:38,550 і мы не гаворым пра Сартаваць картографаў карту тут, 406 00:20:38,550 --> 00:20:41,480 мы гаворым пра функцыі адлюстравання. 407 00:20:41,480 --> 00:20:44,110 У кантэксце мы гаворым тут, карта 408 00:20:44,110 --> 00:20:47,950 гэта спецаперацыя мы можа выконваць на масіў 409 00:20:47,950 --> 00:20:51,630 прымяняць пэўную функцыю да кожнага элементу гэтага масіва. 410 00:20:51,630 --> 00:20:55,190 і такім чынам, мы сказалі б у гэты выпадак, можа быць, array.map, 411 00:20:55,190 --> 00:21:00,330 і ўнутры яго, мы перадаем ў карце ёсць функцыя, што мы хочам 412 00:21:00,330 --> 00:21:02,430 для нанясення на кожны асобны элемент. 413 00:21:02,430 --> 00:21:07,299 Так што гэта свайго роду аналагам дапамогай пятля для перабору кожнага элемента 414 00:21:07,299 --> 00:21:09,340 і прымяніць прыватнасці функцыю да кожнага элементу, 415 00:21:09,340 --> 00:21:14,830 проста JavaScript была пабудавана ў гэта Паняцце адлюстравання, якія могуць прымяняцца. 416 00:21:14,830 --> 00:21:19,700 І гэта вялікі кантэкст казаць аб ананімнай функцыі. 417 00:21:19,700 --> 00:21:22,370 >> Так што давайце, у нас ёсць гэты масіў цэлых лікаў. 418 00:21:22,370 --> 00:21:25,370 Гэта называецца НУМС, і ён атрымаў пяць рэчы ў ім, адзін, два, тры, чатыры, 419 00:21:25,370 --> 00:21:26,410 пяць. 420 00:21:26,410 --> 00:21:30,620 Цяпер я хачу, каб адлюстраваць некаторыя Функцыя на гэтым масіве. 421 00:21:30,620 --> 00:21:34,337 Я хачу, каб функцыя прымяняецца да кожнага элементу масіву. 422 00:21:34,337 --> 00:21:37,420 Ну, давайце скажам, што тое, што я хачу, каб зрабіць, гэта проста ў два разы ўсе элементы. 423 00:21:37,420 --> 00:21:42,520 Што я мог зрабіць, гэта проста выкарыстоўваць цыкл для вар я роўная 0, я менш 424 00:21:42,520 --> 00:21:47,390 або роўна 4, я плюс, плюс, і затым двойчы кожны нумар. 425 00:21:47,390 --> 00:21:49,580 Але я таксама магу зрабіць нешта накшталт гэтага. 426 00:21:49,580 --> 00:21:53,420 Я магу сказаць, НУМС раней быў адзін, два, тры, чатыры, пяць, 427 00:21:53,420 --> 00:21:58,310 Зараз, аднак, я б хацеў, каб вы прымяніць адлюстраванне на гэтым масіве 428 00:21:58,310 --> 00:22:00,400 дзе я хацеў бы вас падвоіць кожны нумар. 429 00:22:00,400 --> 00:22:02,540 І гэта менавіта тое, тое, што тут адбываецца. 430 00:22:02,540 --> 00:22:06,870 Але заўважце, што я перадаю у якасці аргументу для адлюстравання. 431 00:22:06,870 --> 00:22:09,080 Гэта ананімная функцыя. 432 00:22:09,080 --> 00:22:11,140 І заўважце, я не даў гэтая функцыя імя, 433 00:22:11,140 --> 00:22:13,290 Я толькі даў яму спіс параметраў. 434 00:22:13,290 --> 00:22:16,370 І так гэта прыклад з ананімнай функцыі. 435 00:22:16,370 --> 00:22:21,270 >> Мы наогул ніколі не назваў бы гэта функцыя па-за кантэкстам мапе. 436 00:22:21,270 --> 00:22:24,110 Мы вызначаючы яго ў якасці параметру на карту, і такім чынам, мы сапраўды ня 437 00:22:24,110 --> 00:22:27,910 павінны мець для яго імя, калі Адзінае, што клапоціцца аб карце 438 00:22:27,910 --> 00:22:30,339 і гэта вызначаецца права там унутры карты. 439 00:22:30,339 --> 00:22:31,880 І так гэта ананімная функцыя. 440 00:22:31,880 --> 00:22:34,680 Мы не змаглі зрабіць гэта раней. 441 00:22:34,680 --> 00:22:38,400 Карта некаторую функцыю, што прымае адзін параметр, Num, 442 00:22:38,400 --> 00:22:41,890 і што, што робіць функцыя з'яўляецца вяртаецца Уяўная раз 2. 443 00:22:41,890 --> 00:22:45,330 І так пасля гэтага Адлюстраванне быў ужыты, 444 00:22:45,330 --> 00:22:50,090 гэта зараз нейкія Nums знешнасць як, два, чатыры, шэсць, восем, 10. 445 00:22:50,090 --> 00:22:52,090 І мы будзем трашчаць на мой акно браўзэра і проста 446 00:22:52,090 --> 00:22:55,240 зірніце на гэта вельмі хутка, як добра. 447 00:22:55,240 --> 00:22:58,000 >> Так што ў мяне яшчэ адну кнопку тут у маёй хатняй старонцы званае падвойнае. 448 00:22:58,000 --> 00:23:03,570 І калі я націсніце двойчы, і ён кажа мне, перш чым ён быў адзін, два, тры, чатыры, 449 00:23:03,570 --> 00:23:07,250 пяць праз два, чатыры, шэсць, восем, 10. 450 00:23:07,250 --> 00:23:11,930 І калі я вярнуся і націсніце двойчы зноў, два, чатыры, шэсць, восем, 10. 451 00:23:11,930 --> 00:23:17,400 А пасля, чатыры, восем, 12, 16, а затым 20. 452 00:23:17,400 --> 00:23:20,440 І што я раблю ў гэтай функцыі? 453 00:23:20,440 --> 00:23:25,210 Ну, калі мы проста поп да IDE, і Я цягну маю ананімную функцыю, тут 454 00:23:25,210 --> 00:23:28,780 на лініі сем праз 13, я рабіць хоць трохі фантазіі працу тут, 455 00:23:28,780 --> 00:23:32,240 але я проста раздрукаваць што ў цяперашні час у масіве. 456 00:23:32,240 --> 00:23:36,580 Затым у радку 16, 17, і 18, ёсць мая карта. 457 00:23:36,580 --> 00:23:40,930 Гэта дзе я ўжываю гэтую падваенне функцыя кожнай элемента. 458 00:23:40,930 --> 00:23:43,530 А потым крыху далей ўніз, Я проста раблю тое ж самае 459 00:23:43,530 --> 00:23:46,640 Я рабіў раней, толькі цяпер я раздрукаваць змесціва масіва 460 00:23:46,640 --> 00:23:48,167 пасля гэтага. 461 00:23:48,167 --> 00:23:50,500 Але ўсё, што я зрабіў тут проста выкарыстоўваць ананімную функцыю 462 00:23:50,500 --> 00:23:53,640 на карту праз увесь масіў. 463 00:23:53,640 --> 00:23:58,466 >> Так што яшчэ вялікая тэма, каб гаварыць аб ў JavaScript з'яўляецца паняцце падзеі. 464 00:23:58,466 --> 00:24:01,590 Падзея гэта тое, што проста адбываецца калі карыстальнік ўзаемадзейнічае з вашага вэб- 465 00:24:01,590 --> 00:24:04,715 старонка, таму, магчыма, яны нешта націсніце, ці, можа быць, старонка завяршэння загрузкі, 466 00:24:04,715 --> 00:24:07,200 ці, можа быць, яны пераехалі іх мышы над чымсьці, 467 00:24:07,200 --> 00:24:09,290 або яны набралі-то ў полі ўводу. 468 00:24:09,290 --> 00:24:14,260 Усе гэтыя рэчы з'яўляюцца падзеі што адбываюцца на нашай вэб-старонцы. 469 00:24:14,260 --> 00:24:17,460 І JavaScript мае Магчымасць падтрымліваць нешта 470 00:24:17,460 --> 00:24:21,760 называецца апрацоўшчык падзей, які з'яўляецца функцыяй зваротнага выкліку, 471 00:24:21,760 --> 00:24:23,329 рэагуе на HTML выпадку. 472 00:24:23,329 --> 00:24:24,620 І тое, што функцыя зваротнага выкліку? 473 00:24:24,620 --> 00:24:27,328 Ну, гэта наогул проста яшчэ адзін імя для ананімнай функцыі. 474 00:24:27,328 --> 00:24:30,170 Гэта функцыя, якая рэагуе на падзеі. 475 00:24:30,170 --> 00:24:34,130 І гэта, дзе мы прыходзім да Ідэя звязвання пэўных функцый 476 00:24:34,130 --> 00:24:38,060 у прыватнасці атрыбуту HTML. 477 00:24:38,060 --> 00:24:41,420 Большасць HTML элементы маюць Падтрымка атрыбуту 478 00:24:41,420 --> 00:24:45,170 што мы не гаворым пра ў HTML відэа нешта накшталт мышы на 479 00:24:45,170 --> 00:24:50,540 або пры навядзенні або ад нагрузкі, усе гэтыя падзеі 480 00:24:50,540 --> 00:24:53,120 што вы можаце пісаць функцыі што здзелка з гэтымі падзеямі 481 00:24:53,120 --> 00:24:56,090 калі гэтыя падзеі адбываюцца на вашай вэб-старонцы. 482 00:24:56,090 --> 00:24:59,170 >> І так можа быць, ваш HTML выглядае наступным чынам. 483 00:24:59,170 --> 00:25:02,240 І ў мяне ёсць дзве кнопкі тут, адна кнопка і кнопка два, 484 00:25:02,240 --> 00:25:04,620 і вось я ў цяперашні час не вызначана іншае, 485 00:25:04,620 --> 00:25:11,170 але гэта дзе атрыбут Клікніце па-відаць, частка маёй HTML тэга. 486 00:25:11,170 --> 00:25:15,220 Такім чынам, відавочна, калі я вызначаю тое, што адбываецца ўнутры гэтага атрыбуту, 487 00:25:15,220 --> 00:25:18,590 гэта будзе нейкі JavaScript функцыя, якая рэагуе на падзеі 488 00:25:18,590 --> 00:25:24,360 як мяркуецца, націснуўшы на адна кнопка або кнопка два. 489 00:25:24,360 --> 00:25:28,580 >> Што крута пра гэта што мы можаце напісаць апрацоўшчык падзеі радавой. 490 00:25:28,580 --> 00:25:32,370 І гэта апрацоўшчык падзеі будзе стварыць аб'ект падзеі. 491 00:25:32,370 --> 00:25:37,000 І аб'ект падзеі скажуць нам які з двух кнопак была націснутая. 492 00:25:37,000 --> 00:25:38,064 Цяпер, як гэта працуе? 493 00:25:38,064 --> 00:25:39,730 Ну, гэта можа выглядаць наступным чынам. 494 00:25:39,730 --> 00:25:44,860 Такім чынам, мы спачатку вызначым нашы кнопкі мець адказ на зваротны выклік 495 00:25:44,860 --> 00:25:47,470 функцыя, якая будзе называцца калі кнопка націснутая, 496 00:25:47,470 --> 00:25:49,520 мы будзем называць абвесткі назву падзеі. 497 00:25:49,520 --> 00:25:53,320 І заўважце, у абодвух выпадках мы праходзячы па гэтым параметры падзей. 498 00:25:53,320 --> 00:25:55,460 Так мы называем гэтую функцыю або калі гэтая функцыя 499 00:25:55,460 --> 00:26:00,330 спрацоўвае па падзеі адбываецца, ён збіраецца стварыць гэты аб'ект падзеі 500 00:26:00,330 --> 00:26:03,300 і перадаць яго ў якасці Параметр, каб папярэдзіць імя. 501 00:26:03,300 --> 00:26:07,270 І, што аб'ект падзеі будзе ўтрымліваць інфармацыю 502 00:26:07,270 --> 00:26:09,800 аб, якая кнопка была націснутая. 503 00:26:09,800 --> 00:26:11,580 І як гэта зрабіць? 504 00:26:11,580 --> 00:26:13,654 Ну, гэта можа выглядаць наступным чынам. 505 00:26:13,654 --> 00:26:15,570 Так што цяпер у маёй асобна Файл JavaScript, я мог бы 506 00:26:15,570 --> 00:26:17,420 павінны знайсці гэта Функцыя абвесткі імя, якое 507 00:26:17,420 --> 00:26:19,500 зноў прымае гэты параметр падзеі. 508 00:26:19,500 --> 00:26:24,640 А потым тут, дзе я выяўлення Кнопка, якая была выкліканая, 509 00:26:24,640 --> 00:26:28,100 вар трыгера роўная падзея кропка зыходны элемент. 510 00:26:28,100 --> 00:26:33,150 Што было крыніцай, які стварыў гэты аб'ект падзеі, які быў прыняты ў? 511 00:26:33,150 --> 00:26:36,390 Ці было гэта адна кнопка ці гэта кнопка два? 512 00:26:36,390 --> 00:26:40,710 >> А потым вось усё, што я раблю, раздрукоўкі trigger.innerhtml. 513 00:26:40,710 --> 00:26:43,860 Ну, у дадзеным выпадку, у гэтым Кантэкст, trigger.innerhtml 514 00:26:43,860 --> 00:26:45,940 гэта тое, што напісана на кнопцы. 515 00:26:45,940 --> 00:26:48,830 Проста так здарылася, калі скокнуць таму на секунду, што б 516 00:26:48,830 --> 00:26:51,670 быць тое, што ў перыяд паміж гэтымі тэгамі кнопкі. 517 00:26:51,670 --> 00:26:54,150 Гэта будзе адна кнопка або кнопка два. 518 00:26:54,150 --> 00:26:57,320 І давайце зірнем на як гэта падзея будзе апрацоўшчык 519 00:26:57,320 --> 00:27:01,080 глядзець, калі ў нас было гэта працуе на практыцы. 520 00:27:01,080 --> 00:27:03,850 >> Такім чынам, перш за ўсё, вы, адкрылі events.js, 521 00:27:03,850 --> 00:27:06,517 што файл JavaScript, дзе Я вызначыў гэтую функцыю. 522 00:27:06,517 --> 00:27:08,558 І як вы можаце бачыць, гэта ў значнай ступені менавіта тое, што 523 00:27:08,558 --> 00:27:10,230 мы толькі што бачылі на слайдзе секунду таму. 524 00:27:10,230 --> 00:27:14,890 І я буду пераходзіць да Галоўная старонка мы выкарыстоўвалі. 525 00:27:14,890 --> 00:27:17,660 А ў мяне вось кнопка адно і кнопку два. 526 00:27:17,660 --> 00:27:19,820 І я буду націсніце на кнопку адзін. 527 00:27:19,820 --> 00:27:23,930 Вы націснулі на кнопку адзін, калі вы можна ўбачыць прама тут, у баявой гатоўнасці. 528 00:27:23,930 --> 00:27:25,810 ДОБРА. 529 00:27:25,810 --> 00:27:28,980 Націсніце на кнопку два, вам націснуў на кнопку два. 530 00:27:28,980 --> 00:27:32,150 >> Такім чынам, абедзве кнопкі маюць Выклік ж функцыя, праўда? 531 00:27:32,150 --> 00:27:35,840 Яны абодва былі напагатове імя падзея, але гэты аб'ект падзеі 532 00:27:35,840 --> 00:27:41,900 які ствараецца, калі мы націскаем на ён кажа нам, якая кнопка была націснутая. 533 00:27:41,900 --> 00:27:44,650 Мы не павінны напісаць два асобных функцыі або здзелка з наяўнасцю 534 00:27:44,650 --> 00:27:46,470 прайсці любую дадатковую інфармацыю. 535 00:27:46,470 --> 00:27:48,220 Мы проста спадзявацца на тое, што JavaScript будзе 536 00:27:48,220 --> 00:27:53,772 зрабіць для нас, што для стварэння, што Сартаваць аб'екта падзеі ад нашага імя. 537 00:27:53,772 --> 00:27:56,730 Там вельмі шмат больш, каб JavaScript чым тое, што мы разгледзелі ў гэтым відэа, 538 00:27:56,730 --> 00:27:58,521 але якія маюць гэтыя фундаментальнае павінна вам 539 00:27:58,521 --> 00:28:00,690 даволі доўгія шляху да навучанне ўсё, што вам 540 00:28:00,690 --> 00:28:04,030 трэба ведаць аб гэтым цікавы мову. 541 00:28:04,030 --> 00:28:05,000 Я Дуг Лойд. 542 00:28:05,000 --> 00:28:07,010 Гэта CS50. 543 00:28:07,010 --> 00:28:09,181