[За възпроизвеждане на музика] Дъг LLOYD: Така че от сега сме стари професионалистите в уеб програмиране, нали? И ние сме обхванати няколко езици в отделните видеоклипове. А сега нека да направим още една, JavaScript. Първо добрата новина, JavaScript е модерен програмиране език много прилича PHP, чиито синтаксис се извлича от С, така че това е едно добро място да започнете. Става въпрос за стара като PHP, както и, като са били около 20 години. Той е изобретен около едновременно PHP. И JavaScript всъщност е доста от основно значение за работата на потребителя на мрежата. В действителност, има три езика, че аз ще каже нещо като съставляват потребителски опит на взаимодействие със създаването на уебсайт, HTML, CSS и JavaScript. И така, сега нека поговорим малко за JavaScript. Лошата новина обаче е с JavaScript че тя поставя много правила за себе си, и след това им се разпада. И JavaScript всъщност може да бъде вид предизвикателство да се учи, защото това е разлика от C и PHP, които са много структуриран и имат много строги правила за това как нещата могат да работят. JavaScript е вид на станала толкова гъвкава че може би нещата не вървят към работи, както ние ги очакваме да, а може би и ние наистина не може да се научи първата ни език за програмиране като JavaScript. Така че може би, защото това не е така Самата всички правила, определени, и това не е така наистина прилагане на добри навици за кодиране. Но сега сме се надяваме, разработена някои добри навици, кодиращи и за да можем да започнем да набег в JavaScript малко. За да напишете JavaScript, подобен на отваряне до даден файл C с точка C разширение или файл с разширение PHP точка PHP, всичко, което трябва да направите е да се отвори файл с файлово разширение точката JS. Ние не трябва да има никакви специални разделители, както направихме в PHP. Този вид ъгъл скоба въпросителен знак PHP че ние сме свикнали с това, начинът, разказваме нашия браузър, който е това, което имаме JavaScript е чрез включване то в HTML тагове, и ще видим малко за как да направите това само за миг. Другото нещо, което прави JavaScript различно, обаче, е, че той работи от страна на клиента. Така се припомни, че с PHP никога не бихме могли наистина да видим РНР, че подчерта уебсайт. Ако някога сме разгледали изходния код на страницата, ние само ще виж на HTML, който е генериран от тази PHP. Но JavaScript работи от страна на клиента. Вашият JavaScript работи на вашия компютър. И затова можете да направите неща, които харесваш добави блокери. Нали така? Блокиране на реклами обикновено се извършва чрез убивайки всички на JavaScript която се изпълнява на даден уебсайт. И тъй като това би трябвало да изпълни на вашата машина от страна на клиента, може просто да спре JavaScript за движение изцяло. Това означава също така, че когато използвате уеб сайт, който включва JavaScript, можете да изпратите източника на JavaScript код като част от Вашия отговор HTTP на клиента, когато те ги поискат. И така, вие не вали искате да използвате JavaScript да се направи наистина чувствителни неща като преминава информация относно пароли на потребителите назад и напред, защото те са всъщност Ще получите всички от изходния код, а не само на HTML, който се създава, като би бил случаят с речем PHP. И така, как ние включваме JavaScript в нашата HTML да започнете? Е, подобен на CSS, всъщност, е нещо като как го правим тук. С CSS имаме стил тагове. А вътре на тези тагове в стил, можем да определим CSS стил лист. По същия начин с JavaScript може да се отворим скриптови тагове, друг HTML тагове не сме говорим за в нашата HTML видео, и пишат JavaScript в между тези скриптови тагове. Също така обаче, като CSS, ние може да се свърже в извън CSS файлове и да ги дръпнете в нашата програма по този начин. С CSS можем също, извинете ме, с JavaScript ние също може да посочва източника атрибут на маркера на скрипта да се свържат в JavaScript отделно, така че да не правим трябва да го напиша в между скриптови тагове, ние може да го свърже в използването че скрипт таг, както добре. И точно както със случая с CSS, където ние препоръчва, че е вероятно Във ваш интерес е да се напише вашия CSS в отделен файл, в случай вие трябва да го смените, по подобен начин правим ние препоръчваме ви да напишете JavaScript в отделни файлове и да използвате източник на скриптови тагове приписват си вратовръзка JavaScript във вашия HTML, вашата уеб страница. Така че JavaScript променливи, ние ще започнем да говорим за синтаксиса тук. И ние ще мине през този вид бързо, защото ние сме направили това в PHP, така че всичко това трябва да бъде доста познато. Така променливи в JavaScript са много подобен на PHP променливи. Няма по тип спецификатор, и когато се въведе променлива, можете да го префикс с Var ключова дума. В PHP ние ще направим нещо като този, знака за долар х. Ето как ние посочено променлива, но не, ние не посочват типа на променливата на всички. Бихме казали нещо подобно знак за долар х е равно на 44 в PHP. Ако правехме на едно и също нещо в JavaScript, бихме казали Var х е равно на 44. Така Var е нещо като нашия начин за въвеждане на променлива. Това е може би малко по-интуитивно от просто долар променлива знак. Отново, тъй че няма типове данни, които можем да направим това с всякакъв вид данни, струни, нещо друго, всичко ще бъде Var. Условни, всички от нашия стари приятели от C и PHP все още са на разположение, така че ние имаме, ако, иначе, ако, иначе, ключ и въпрос марка на дебелото черво. Включи останалата толкова гъвкав, колкото го беше в PHP, но всички от тях сте запознат с до сега. И по същия начин с примки са стари парчета, докато, от правя, докато, както и за все още на разположение за нас. Така че вече знаем, че много от Основният JavaScript вид основи просто по силата на с доста малко на знания сега за C и PHP. Какво ще кажете за функции в JavaScript? Е, подобен на PHP всяка функция е въведени с функция ключова дума. Вие казвате, функция, а след това ви започнем да определите своя функция. Каква е малко по-различна за JavaScript, обаче, е способността да имат което се нарича анонимен функция. Така че можете да определите функции които нямат име. Това е нещо, което ние Наистина не сте виждали преди. Ние наистина ще използвам понятието от анонимен функция малко по-късно в тази видео, защото тя ще направи малко повече разум в контекст когато го видя в дадена ситуация че съм тук, изработени. Но нека просто да погледнем на каква проста JavaScript функция може да изглежда така. Така че аз съм отишъл напред и отвори ми CS50 IDE и аз вече тече Apache да започне моя сървър работи. И аз имам този файл отварят нарича Home.html. И аз ще я увеличите малко тук. И в общи линии, можете да видите Home.html е просто един куп бутони. И аз твърдя, в горната тук че това е секцията JavaScript материали. Така че има един куп бутони тук, но какво всъщност тези бутони да направя? Е, ние ще се над главата ми IED, и аз Home.html отворите тук. В самото начало, ето къде съм, свързваща във всички от моите изходни файлове с JavaScript. Нали така? Така че имам anonymous.js, clock.js, Аз съм с помощта на атрибута източник на маркера на скрипта да се свържат в файл. Така че аз не съм написал някоя JavaScript директно в този файл, но съм изтеглен в цялата JavaScript Аз съм писал отделно. И ако ние превъртете надолу тук, това всички трябва да погледнем малко по-запознат с малко на нов синтаксис. Тук имаме удар с глава на маркер за функции и след това бутон. Имам един вход, който е бутон тип, и очевидно, когато щракнете върху него, Отивам да се обадя на някои функционира сигнал дата. И това е как можем да подреди на смесват малко на JavaScript и HTML. Те всъщност играе доста добре заедно, и така очевидно, когато Аз кликнете върху този бутон, аз отивам да се обадя на някои дата предупреждение функция. И по същия начин съм определено поведение за всички други бутони, че са на тази home.html страница, които ние ще продължаваме да се върне да в хода на това видео. Но нека се върнем до тук и да погледнем най clock.js, което е най- JavaScript файл, който съм пише, че има тази първа функция ние ще да разгледаме. Както можете да видите, започвам моята JavaScript функционира с функцията ключовата дума, и съм дал този един име, тя се нарича сигнал дата. Вътре на там, аз очевидно се създаде нова локална променлива, наречена текущата дата. И аз отивам да присвоите равен на нова дата. И ние може да се получи в много подробности за това какво дата е, и наистина JavaScript е толкова голяма, че ние не можем евентуално покриване на всичко в едно видео. Но достатъчно е да се каже, че това ще да се върне при мен елемент на данни, който капсулира текущата дата и час. Аз съм съхраняване, че в променлива, че аз съм очевидно ще предупредим текущата дата. Е, какво прави предупреждение текуща дата прилича? Нека да разгледаме най самия файл архивирате отново в прозореца на браузъра. Така че отново, това е бутона, който I са обвързани с това име функция. И аз го кликнете там и виж какво го е направил, той алармира. Той показа този вид на кутия казвам ми се, че текущото време е очевидно това е 4-ти ноември в 10:43:43 часа сутринта. И ако аз го натиснете отново, сега става дума за няколко секунди по-късно, нали? Така че това е всичко, тази функция прави. Когато натиснете този бутон, тя изскача предупредително съобщение за мен. Така че наистина не е твърде много да се функции това е различно от PHP, само малко на нов синтаксис която идва с работа с JavaScript. Масивите в JavaScript са доста ясен. За да заявите масив, който използвате синтаксис квадратни скоби че сме запознати с от PHP. И подобно на PHP, ние Също така могат да се смесват типове данни. Така че този масив, както на тези масиви би било напълно основателно JavaScript. Едно, че е всички числа, и този, който се смесва с различни типове данни. Каква е нещо много различно в JavaScript, все пак? Това е идеята на един обект. Така че може би сте чували за обектно-ориентирано програмиране. Ние не правим много от него в CS50, но ние ще направим малко по-малко от него тук в контекста на JavaScript. Сега JavaScript има способността да се държат като обект ориентирано програмиране език, но това не е самият изключително обектно-ориентирано език за програмиране. И това отново идва обратно към затова казах, може да бъде голямо предизвикателство да научите JavaScript като първа програмиране език, тъй като не Наистина се поберат конкретен парадигма. С от друга страна е функционален език за програмиране. Ако искаме да, функции са сортиране на големия шеф човек, нали? Те диктуват какво се случва всичко останало. Ние искаме да променим променливи, ние наричаме функции. Ние правим неща, за да функционира. Вместо обекти, в обектно ориентиран език, обекти нещо се превърне в звезда и функции стават нещо като вторична. Но това, което е обект, това, което е това понятие на обект? Е, ако това помага, мисля, за него на първо сортиране на като структура C или структура на че сме научили за преди. В C, структура съдържа няколко области, а може би и ние сега може да започне да наричаме тези полета свойства. Но свойствата никога не стои на собствените си, нали? Ако аз определи структурата за кола като това със следните две полета или свойства, един един число за годината на колата а друг на 10 герой низ за модела на автомобила, Мога да кажа, нещо като това, Аз може да обяви нова променлива от тип структура на колата Хърби. И след това мога да кажа нещо като herbie.year равнява 1963, и herbie.model равнява Beetle. Това е добре. Аз съм с помощта на полето в контекст на структурата, но аз никога не можех просто каже нещо подобно. Нали така? Не мога да използвам името на полето независимо от структурата. Това е нещо фундаментално нещо. Така полета са от основно значение за C структури са много сходни с имоти са от основно значение за джава обекти. Но това, което ги прави особено интересно обекти е, че може да има какво се наричат ​​методи, които са наистина просто изискана дума за функции, които са присъщи на обекта, както и. Така че това е функция, която може да бъде само наречена в контекста на даден обект. Само един обект, който е определил тази функция вътре в неговата, ако мислите, че за по- Struct, функцията се определя вътре тези, които определят фигурни скоби на структурата. Така че това само означава нещо на структурата. И това е нещо, което правим тук с обекти и методи. Това е основно като сме определяне на функция има смисъл само по конкретен обект, така и ние наричаме това метод на обекта. И ние никога не можем да се обадя, че функция независимо от обекта, точно като не можем да кажем година или модел независимо от Struct в В. Така функционално програмиране парадигми изглеждат нещо подобно. Функция и след това, когато минаваш в обекта като параметър. В даден обект ориентирано програмиране езици, този вид получава копна, и ние ще си помисля харесва това, object.function. Така че това нещо, че дот Операторът отново предполага че това е някакъв вид имот или атрибут на самия обект. Но това е, което един обект ориентиран език за програмиране може да се направи, за да се направи функция Призовавам метод, отново, което е само една специална дума за функция който е присъщ на обект. Това е, което, че синтаксис може да изглежда така. И така, ние ще започнем да видите някои от това в контекста на JavaScript. Можете също да се мисли за един обект нещо като асоциативен масив, които ние сме запознати с от PHP. Запомни асоциативен масив позволява да имаме двойки ключови стойности, вместо налага индекси 0, една, две, три, и така нататък като сме свикнали от C масиви. Асоциативните масиви могат карта думи, като във видеото PHP, ние говорим за гарнитурата на пици. И така, ние трябваше масив наречени пици, и ние имаше сирене е ключов и $ 8.99 беше стойност, а след това пеперони беше ключов, 9,99 $ е стойност, и така нататък. И така, ние също може да се мисли за един възразят нещо подобно на асоциативен масив. И така, този синтаксис тук ще създаде нов обект Хърби нарича с две свойства вътре в него. Година, която се дава стойността 1963 г., и модел, на което е назначена низа Beetle. И забележи, че тук аз съм с помощта единични кавички в JavaScript. Можете да използвате единични или двойни кавички когато говорим за струни. Това е просто условно вярно, че повечето пъти когато пишете JavaScript, просто използвайте единични кавички. Но мога да използвам кавички тук, и че би било съвършено глоба, както добре. Така че да си спомня как в PHP имахме тази идея на за всяка линия, която ще ни позволи да обхождане всичко от стойността на ключовата двойки асоциативен масив, защото ние не са имали тази възможност, за да превъртите чрез 0, един, два, три, четири, и така нататък? JavaScript е нещо много подобно, но това не се нарича за всяка линия, тя се нарича в примки. Така че, ако аз казах да ми харесват това, за Var ключ в обект, че е нещо подобно на казвайки за всяко нещо като нещо. Но всичко, което правя тук е итерации през всички ключове на моя обект. А вътре на Кърли тиранти там, бих използвате обект квадратни скоби от ключово значение за справка към стойността по това ключово място. Алтернативно, има дори и друг подход. Ако аз просто само се грижи за стойности, мога да кажа за ключовата на обект, и просто да използвате ключовата вътре. Така че за Var ключ в обект, имам да се използва обектно квадратни скоби ключ вътре в контура. За Var ключ на обекта, което мога просто използвайте бутон вътре в контура, защото аз съм просто конкретно Говорим за стойностите там. Така че нека да може да вземе Посетете разликата само за да ви покажа най-бързо разликата между четири в и за на с много специфичен масив, които имаме тук, седмица масив. Така че трябва да се намери нов масив че съм изпълнен със седем струни, Понеделник, Вторник, Сряда, Четвъртък, петък, събота, неделя. И аз искам да сега обхождане чрез този масив, отпечатване на определена информация. Ако използвам в цикъл да отпечатате информация, какво мислите аз ще получа? Е, нека да разгледаме. И преди да скочи над да ми прозорец на браузъра, Просто знам, че console.log е нещо като един начин за правене на отпечатъци F в JavaScript. Но това, което е на конзолата? Е, това е, което ние отиваме да отиде да разгледаме точно сега. ОК, така че ние сме отново тук в моя прозорец на браузъра, и аз отивам да се отвори до моите инструменти за разработчици. Отново, аз съм просто се разхождаш F12 да се отворят инструменти за разработчици. И забележете, че тук, в отгоре съм избрал конзола. Така че това е идеята на конзола, и тя ще ни позволи да отпечатате информация навън, нещо като терминала, но както ще видите малко по-късно, ние също може да въведете информация в да си взаимодействат с нашата уеб страница. Отивам да я увеличите малко тук, и аз ще се сега кликнете върху в тест. И четири в test-- Няма да ви покажа кода за него точно сега, но вие ще го получите, ако изтегляне изходния код, който е свързано с това video-- е само, че в цикъл че видяхме само Преди втория в слайда. Така че аз ще кликване, което бутон, и тук, ето какво е отпечатана в конзола, 0, едно, две, три, четири, пет, шест. Аз не разпечатва информацията вътре тези места масив, защото аз използвах в цикъл. И вътре в тялото на цикъла, I просто отпечатва ключ не възрази ключ. Но ако аз сега изчистя конзола, и аз преминат към за изпитване, и четири от изпитване Аз казвам да използвам за на линия вместо и разпечатате ключ, ако щракнете, че сега аз съм се на действителните елементи вътре в моя обект или моя масив в този случай. My масив от делнични дни. I разпечатан понеделник Вторник, сряда. Така че това е разликата между а в линия, която отпечатва само клавишите, ако просто използват ключ вътрешността на тялото на цикъла, и за на линия, които щампи ценностите, ако използвате само ключ вътре в тялото на цикъла. Добре, как можем сега да започне да се свързвам струни и може би бъркам някои променливи с интерполация като ние бяхме в състояние да се направи в PHP? Е, ние сме доста запознат с този от PHP. Това е начина, по който ще го направи с помощта на дот оператор да свързвам струни. В JavaScript, все пак, ние всъщност се използва нещо нарича оператор плюс, който е може би дори малко по- интуитивен, нали? Ние сме добавяне на куп струни заедно. Така че нека да се върнем отново и да видим какво това ще отпечата, ако ние се опитваме да разпечатате цялата информация в седмицата масив. Добре, така че в рамките тук по съединяване на низове, Имам две възможности, низ сграда V1 и след низ сграда V2. И ние ще видим защо ние нужда от V2 в секунда. Но аз ще кликнете върху низ сграда V1, които е кодът бяхме просто като погледнете, на console.log с всички плюсове. Да видим дали тази щампи какво да очакваме. Понеделник е ден номер 01 на седмицата, Вторник е ден номер 11 на седмицата. Е, това, което аз се опитвах да се направи там, беше да тя да разпечатате понеделник е ден номер един, вторник е ден номер две. Но изглежда, сякаш съм Винаги отпечатване една. Е, защо е това? Е, оказва се, да вземе още един поглед в този малък фрагмент от кода тук. Забележете, че ние сме с помощта на плюс оператор в два различни контекста. И така, тук е мястото, където може би нещата че сме нещо като казваме, О, това е толкова голяма. Ние не се занимаваме с типове данни вече. Но тук е мястото, където фактът че ние губим типове данни всъщност може да бъде малко по- на проблем за нас. Сега, когато операторът на плюс се използва за свързвам струни и добавяне на номера заедно, JavaScript има да направи най-доброто си предположение за това какво искам да направиш за мен. И в този случай, както се досещате погрешно. Тя просто свръхдълги ден, което би било 0, едно, две, три, четири, пет или шест, и след това просто съединявани че и след това съединявани един. Той всъщност не ги добавете заедно. И така, тези езици, PHP и JavaScript, че резюмета далеч това понятие от типа, не е нужно да се справят с него вече. Те са все още имат видове под капака. И ние можем, в ситуации, по този начин, се наберат този факт като кажа нещо като може би това, което Показателно е, JavaScript, от начин, лечение на това като цяло число, не го третира като низ дори въпреки че ние сме смесване струни и числа тук. Това е просто едно от тези неща че изглежда толкова голяма, в контекст че ние не трябва да се справят с видове вече, но Понякога ще тичам в ситуация, точно като тази, където фактът, че не е нужно контрол върху типа може да се обърне срещу вас ако не сте внимателни. И така, ако се появи обратно към IDE, аз съм ще разчисти ми конзола отново, и аз отивам да кликнете низ сграда версия две, които е мястото, където да използвам, че синтактична инт функция. Сега е отпечатване информация, че аз съм очаквал. Ден номер едно в понеделник, вторник е ден номер две, и така нататък. Така че нека да говорим за функции отново. Обещах бихме говорим за анонимен функции, а сега контекста за това най-накрая пристигна. Така че, преди да направим това, нека да поговорим отново за масиви за само за секунда. Така масиви са специален При един обект. Всъщност, всичко в JavaScript е всъщност един обект. Така функции са специален случай на даден обект, числа са специален При един обект, но масиви конкретно има редица методи. Не забравяйте, защото те са обекти, те могат да имат свойства и методи. Те имат редица методи, които може да се прилага на тези обекти. Има един метод, наречен размер, array.size, която ще се върне към вие като може да се очаква на броя на елементите в масива. array.pop, нещо като нашата представа за пръкват разстояние на комин, ако си спомняте от нашия купища видео, премахва последния елемент от масива. Array.push добавя нов елемент до края на масив. array.shift е нещо като DQ, тя снадки от първия елемент на масив. Но има и още една специална метод на масив, наречен карта. И това е нещо като интересна концепция. Така че каква е идеята на картата? Вие всъщност ще видите този и в няколко други езици, и ние не говорим за по- сортиране на картографите карта тук, ние не говорим за функция за картографиране. В контекста сме говорим тук, карта е специална операция ние може да се изпълнява от масив да прилагат определена функция за всеки елемент на този масив. и така бихме казали в този случай, може би array.map, и вътре в него, ние сме минаваща в картата е функция, която ние искаме да се прилага за всеки елемент. Така че това е нещо, аналогичен на използване на една линия, за да превъртите през всеки елемент и прилагането на определено функционира за всеки елемент, Просто JavaScript е тази, построена през понятие за картографиране, че може да се прилага. И това е един голям контекст, за да говорим за анонимен функция. Така че нека да кажем, че имаме този масив от цели числа. Тя се нарича Nums, и тя има пет неща в него, едно, две, три, четири, пет. Сега искам да очертаят някои функция на на този масив. Искам да има функция прилага за всеки елемент на масива. Ами, нека да кажем, че това, което искам да направите, е просто да удвои всички елементи. Какво можех да направя, е просто да се използва линия за Var I е равно на 0, I е по-малко от или равно на 4, аз плюс, плюс и След това се удвоява на всеки един номер. Но аз също може да направи нещо подобно. Мога да кажа, Nums е бивш едно две три четири пет, сега, обаче, бих искал да ви прилага нанасянето им върху този масив където I бихте искали да се удвои всеки номер. И това е точно какво се случва тук. Но забележете какво съм минаваща в като аргумент към картата. Това е анонимна функция. И забележи, че не са дали тази функция на име, Аз бях само го даде списък параметър. И така, това е пример от анонимен функция. Ние по принцип никога не бих нарекъл това функция извън контекста на картата. Ние, определяйки го като параметър към картата, така че ние наистина не Трябва да има име за него, ако Единственото нещо, което се грижи за е картата и това е дефинирано полето там вътре на картата. И така, това е анонимна функция. Ние не сме били в състояние да направят това по-рано. Карта някаква функция, която приема един параметър, бр, и това, което прави тази функция се връща Num пъти 2. И така, след това картографиране е бил приложен, Сега това е, което Nums външен вид харесват, две, четири, шест, осем, десет. И ние ще се появи на моя прозорец на браузъра и просто да разгледаме този наистина бързо, както добре. Така че аз имам друг бутон тук в моята начална страница, наречена двойна. И когато щракнете двукратно, и да го казва ми, преди да е един, два, три, четири, пет, след две, четири, шест, осем, десет. И ако се върна и кликнете два пъти отново, две, четири, шест, осем, 10. И тогава, след като, четири, осем, 12, 16, 20 и след това. И това, което правя аз в тази функция? Е, ако ние просто поп към IDE, и I спра моята анонимна функция, тук по линия седем до 13, аз съм прави малко фантазия работа тук, но аз съм просто отпечатване това, което е в момента в масива. След това на ред 16, 17, и 18, там е моята карта. Това е мястото, където съм, прилагащи това удвояване функция на всеки един елемент. И след това малко по-надолу, Аз съм просто прави същото нещо Правех преди, освен сега съм отпечатване на съдържанието на масива след това. Но всичко, което съм правил тук е просто използвайте анонимен функция да съставят карта през целия масив. Така че още една голяма тема да се говори за в JavaScript е представата за дадено събитие. Едно събитие е нещо, което просто се случва когато потребителят взаимодейства с вашия уеб страница, така че може би те кликнете нещо, или може би страницата приключи зареждането, или може би те се преместили тяхната мишката върху нещо, или те са написали нещо в полето за въвеждане. Всички тези неща са събития които са настъпили на нашата уеб страница. И JavaScript има възможност да поддържа нещо наречено боравене със събития, които е функция за обратно извикване, че реагира на HTML събитие. И това, което е функция за обратно извикване? Е, това е обикновено просто още Име на анонимен функция. Това е функция, която отговор на събитие. И това е мястото, където стигаме до идея за свързване на определени функции до определена HTML атрибут. Повечето HTML елементи имат подкрепа за атрибут че ние не говорим за в HTML видео за нещо подобно на клик или на висене или на товара, всички тези събития които след това можете да напишете функции които се занимават с тези събития когато тези събития появят на вашата уеб страница. И така че може би вашата HTML изглежда нещо като това. И аз имам два бутона тук, Бутон един бутон и две, и тук имам в момента определено нищо, но това е мястото, където атрибутът на клик е очевидно част от моя HTML тагове. Така че очевидно, когато се дефинира какво е става вътре на този атрибут, това ще бъде някакъв JavaScript функция, която отговаря на събитието вероятно на кликване върху Бутон един или два бутона. Какво е някак страхотно за това е, ние може да напише родово събитие манипулатор. И това събитие ще Handler създадете обект събитие. И обект на събитието ще ни разкаже кой от двата бутона се натисне. Сега как става това? Е, това може да изглежда нещо като това. Така че ние първо ще определи нашите бутони за да получите отговор на обратно повикване функция, която ще се нарича когато бутонът се натисне, ние ще се обадя събитие предупреждение име. И забележи и в двата случая ние сме преминаване в този параметър събитие. Така че ние наричаме тази функция или, когато тази функция се задейства от събитието се случва, това ще създаде това събитие обект и да го мине като параметър, за да предупреди име. И това събитие е обект ще съдържа информация за кой бутон се натисне. И как да го направя това? Е, това може да изглежда нещо като това. Така че сега в моя отделна JavaScript файл, бих могъл Трябва да намерим този функция за предупреждение име, което отново приема, че параметър събитие. И тогава тук е мястото, където аз съм откриване кой бутон се задейства, Var спусъка равнява събитие точков източник елемент. Какво е източник, който е създаден това събитие обект, който е приет през? Беше ли бутон за една или това беше бутона две? И тогава тук всичко, което правя е отпечатване trigger.innerhtml. Е, в този случай, в тази контекст trigger.innerhtml е точно това, което е написано върху бутона. Просто така се случи, ако ние скочи назад за секунда, че ще да бъде това, което е в между тези копчета тагове. Това ще бъде един бутон или бутон две. И нека да разгледаме най- как това събитие манипулатор би Посетете ако имахме го изпълняват на практика. Така че на първо място, вие сте отворили events.js, който е файл, където JavaScript Аз определено тази функция. И както можете да видите, че е доста много точно това, което ние просто видях в слайда преди една секунда. И ще преминем към начална страница ние сме били използвате. И аз имам тук бутон един бутон и две. И аз ще кликнете на бутона една. Можете кликнали върху бутона един, ако да видите тук, в сигнала. ДОБРЕ. Кликнете върху бутона две, вие кликне върху бутон две. Така двата бутона имат същата функция разговор, нали? Те двамата бяха нащрек име събитие, но това събитие обект които получава създава, когато ние кликнете върху той ни казва кой бутон се натисне. Ние не трябва да пиша два отделни функции или сделка с имащ да премине всяка допълнителна информация. Ние просто се разчита на това, което JavaScript ще направи за нас, която е да се създаде, че вид на събитието обект от наше име. Има още много да JavaScript от това, което ние сме обхванати в това видео, но с тях фундаментално трябва да получите доста дълго начини за изучаването на всичко, което ще трябва да знаете за това Интересно език. Аз съм Дъг Лойд. Това е CS50.