>> Добра, сёння, Я збіраюся казаць
аб JavaScript і як гэта адрозніваецца ад іншых мовах
што вы маглі б быць любіў PHP.
Такім чынам, у апошняй лекцыі па Панядзелак, мы трохі пагаварылі
пра тое, што падобна, што знаёмыя паміж JavaScript
і PHP або Python або Рубін або З або іншых мовах
што вы ўжо знаёмыя.
Але ў JavaScript на самай справе ёсць сапраўды унікальнае ўзяцце
на аб'ектнай мадэлі, што робіць ён накшталт як зусім іншы
чым большасць моў, вы збіраецеся мець справу.
Так функцыі свайго роду
з недаацэненым Канцэпцыя ў JavaScript.
Яны спосаб больш магутным, чым яны знаходзяцца ў іншых мовах
таму што яны могуць у - па адной прычыне,
яны ў стане быць ўсталяваць у якасці значэнняў.
Так прама тут у нас ёсць вар х роўная функцыю
і гэта першы клас значэнне, якое можа быць перададзена
вакол у якасці аргументу.
Такім чынам, вы не павінны абвясціць функцыю х
і проста выкарыстоўваць х у гэтай галіне.
Вы можаце перадаць значэнне х у любым месцы па ўсім, вы ведаеце,
ў якасці аргументу ў іншая функцыя
дзе можна модуль экспарту Давід згадваецца ў вузле.
Так што ў наступны Справа ў тым,
што функцыя аб'ект у JavaScript.
Такім чынам, вы можаце фактычна ўсталяваць ўласцівасці, як значэнняў
на функцыі і проста лячыць гэта падобна, што гэта аб'ект.
Таму, калі вы працуеце з JQuery, вы ведаеце, што долар
а затым вы перадаеце селектар у яго
і выклікаць яго як функцыю.
Але тады вы таксама ўжо даляр кропка AJAX.
І гэта не свайго роду сэнс, калі вы думаеце,
функцыі гэтак жа, як быць тое, што вы можаце выклікаць
або патэлефануеце па тэлефоне.
Але ў JavaScript дазваляе задаць ўласцівасці функцый
як статычныя ўласцівасці толькі з х кропка someProp
як я паказваў там.
Наступны момант, які мы буду ўдавацца ў трохі больш
у глыбіню з'яўляецца той факт, што Функцыі могуць быць апрацаваны
як класы ў JavaScript.
Так што ёсць паняцце гэтага новага аператара
якая стварае новы асобнік функцыя разам са свайго роду
накшталт целе класа, як які пастаўляецца разам з ёй
і мы збіраемся пайсці ў яго трохі больш,
гэта называецца прататыпам.
І гэта тое, што робіць JavaScript вельмі унікальны параўнанні
на іншыя мовы якія клас аснове,
JavaScript з'яўляецца прататыпам аснове.
А потым проста на ніжняя там,
функцыя можа проста назваць ясна, як мы прывыклі.
Так што няма нічога новага.
Іншая справа, што гэта унікальная з'яўляецца
што масівы з'яўляюцца на самай справе аб'ектаў.
Яны не падобныя на яны знаходзяцца ў PHP
дзе вы проста стварыць новы масіў.
На самай справе гэта скарачэнне за выказванне новы масіў.
І масіў на самай справе падклас аб'екта.
Дык вось тое, розныя, і я пайду
ў трохі больш больш падрабязна на гэтым.
І магчымасці адладкі
з JavaScript сапраўды роўных, наколькі я бачыў.
Гэта скрыншот з Chrome Inspector
якія мы збіраемся выкарыстоўваць для астатняй
прэзентацыі сёння.
І, каб дабрацца да гэтага, вы проста пайсці падаць інструменты для распрацоўшчыкаў
і адкрытыя Хром інспектар ці вы можаце пстрыкнуць правай кнопкай
і націсніце шоу элемент I думаю, што гэта на HTML старонцы
ці я думаю, што гэта каманда варыянт J адкрывае гэта.
Але мы будзем ісці ў гэта, і вы можа на самай справе ўсталяваць кропкі супыну
як вы працуеце праз код JavaScript і сартавання
з ацаніць тое, што мясцовы зменныя, якое значэнне
гэтага з'яўляецца і гэта робіць яго спосаб лягчэй адладкі кода.
І не - гэта не вымушаны баку браўзэра код
але вы можаце на самой справе запусціць асобнік
гэтай Chrome Inspector для вашага кода на баку службы
які з'яўляецца вельмі акуратным, таму што вам можна пакрокава радок за радком
як запыт прыходзіць у ваш сервер і ўбачыць, што адбываецца
і гуляць з зменнымі у кансолі тут.
Так як я ўжо казаў, JavaScript гэта мова на базе прататыпаў
Гэта азначае, што існуе мноства значэнняў па змаўчанні, якія накшталт
схаваных для кожнай функцыі
ў аб'ектнай пункту Прататып уласнасці.
Так што гэта свайго роду хэш проста розныя значэнні па змаўчанні
што пры выкліку функцыянаваць з новага ключавога слова,
тых, ўсталёўваюцца па змаўчанні як функцыі
, Якія даступныя на экзэмпляры.
Так што на самай справе з'яўляецца сапраўды эфектыўным для -
гэта эфектыўны спосаб Стварэнне аб'ектаў памяці мудрым
таму што JavaScript выканання толькі павінен адсочваць
прататыпа аб'екта.
Гэта свайго роду паказвае на, што
калі вы cretae новы Асобнік класа.
І вы таксама можаце імітаваць спадчыну як вядома
ў мовах на базе класаў дзе ў вас ёсць свайго роду
накшталт гэта распаўсюджваецца, што, распаўсюджваецца, што вы можаце імітаваць
, Што ў JavaScript праз тое, што называецца
ланцужок прататыпаў.
І мы ўбачым прыклады пра гэта.
Так што калі ваш - JQuery убудовы на самай справе яны рэкамендуюць JQuery
Аўтары, каб выкарыстоўваць долар кропку Fn, каб дадаць функцыянальнасць
у бібліятэку JQuery.
І мы на самай справе збіраецца перайсці да - Так, на гэтай старонцы,
у нас ёсць долар - Я уключыў JQuery.
І калі вы робіце долар кропка ў кансолі
пра які я казаў у выніку чаго Вы праз каманду зруху J
ці толькі збіраецеся Прагляд, Распрацоўшчык, Прылады распрацоўкі
і перайшоўшы на ўкладку Sources.
[Неразборліва Заўвага]
Так, вядома. Таму, калі я пачаў ўвесці зменную,
гэта аўта-завяршэння для мяне тое, што даступна там.
Так я набраў у долар, і я магу см. Я думаю, Chrome мае некаторыя
убудаваны даляра, даляр і долар х.
Так што цяпер я проста хачу Даляр і я паклаў у кропку.
А потым ён паказвае мне усе ўласцівасці
, Якія даступныя на аб'екце JQuery.
Але калі я раблю долар кропка прататып,
Цяпер я бачу, усе метады што я прывык да выкарыстання
калі ў мяне ёсць даляр, селектар а потым я ланцуг ад, што з,
Вы ведаеце, дадаць клас або дадаць або размыццё або любы з т.п..
Гэта ўсё на самай справе на прататыпе
які пад капотам JQuery стварае новы асобнік сабе
і гэта свайго роду хавае ўсе гэтыя дэталі з вас.
Так і справа, што я быў робячы назад сюды
з функцыяй, яны на самай справе хаваюць прататып ад вас
і проста псеўданім яго да даляра кропка Fn.
Таму большасць людзей на самой справе не разумеюць,
што існуе прататып Пад капотам that's -
што вы можаце падлучыцца да і дадаць дадатковую функцыянальнасць
у кожным выпадку JQuery калі вы хочаце.
Такім чынам, "новы" аператар сапраўды свайго роду цяжка
спачатку разабрацца.
Пры выкліку функцыі з "новым",
гэта зусім іншае спосаб выкліку функцыі
як быццам вы толькі называецца гэта ясна.
Так ствараецца "новы" аператар тое, што называецца новы асобнік
аб'екта або новы асобнік, вы можаце думаць
аб'екта як класа.
І калі гэта адбываецца, значэнне гэта якія могуць быць знаёмыя
з з JQuery, яны як бы ўсталяваць гэта
да таго, што зручна ў той час.
Яны, як правіла, усталяваць яго на ток DOM вузел, які вы
на, як вы збіраецеся праз як кожны ці нешта ў гэтым родзе.
Яны - мяркуецца Гэта значэнне як значэнне асобніка
што вы стварылі з "новым", які ўключае ў сябе ўсе
на ланцужку прататыпаў і ўсё з метадаў, якія вы знайшлі б
як ўласцівасці прататыпаў.
Такім чынам, гэта залежыць ад таго, наколькі функцыя выклікаецца,
што велічыня гэта.
І гэта сапраўды зман калі вы пачатковец у JavaScript.
Але кожная функцыя, што называецца мае - мае на гэта значэнне.
Так што нават калі вы не стварылі Новы асобнік чагосьці,
што гэта мяркуецца быць глабальным.
Ці вы можаце выклікаць функцыю з выкарыстаннем метаду выкліку
дзе метад прымяняецца у JavaScript.
Вы можаце функцыю і паказаць, што гэта павінна быць.
Такім чынам, вы можаце зрабіць гэта дынамічны, якія сапраўды магутны
але і дазваляе рабіць рэчы, якія могуць ўводзіць у зман
і ўвесці ў зман іншыя распрацоўшчыкі
калі яны не выкарыстоўваюць на тое,.
І JQuery, я б сказаў, робіць яго яшчэ больш заблытаным
на што робіць яго зручным і усталяваўшы яе
да бягучага вузла DOM.
Але простае правіла, каб памятаць што велічыня гэта
калі вы шукаеце
на функцыянальным выкліку з'яўляецца што засталося ад кропкі.
Так што калі ў вас ёсць аб'ект
і гэта тое, кропка нешта функцыя
што вы тэлефануеце то Першае значэнне тое, што значэнне
з гэтага.
Дык вось прыклад кода
дзе я ствараю новы аб'ект літаральнае
які з'яўляецца толькі аб'ектам створаны з фігурнымі дужкамі
і я ўсталёўваю імя Бобу
а затым у мяне ёсць sayName Метад тут, які -
так ўнутры гэтай sayName калі я х кропка sayName,
Значэнне гэтай роўная да х, таму што левая
з коскі, ад х. Так што, калі Я называю гэта х кропкавай sayName,
было б павітацца Боб.
А потым яшчэ адзін прыклад
дзе я на самой справе прысваення х кропка sayName, функцыя
да зменнай Y, які, як я ўжо казаў
у JavaScript цябе можна прызначыць функцыі
пераменным калі вы хочаце, гэта сапраўды гнуткі, што шлях,
але цяпер, калі я тэлефаную Y, ён страчаны кантэкст х.
Так што гэта цяпер глабальны або калі вы знаходзіцеся ў строгім рэжыме,
Я лічу, што нуль або не вызначана.
Але - Так Y не тое, што вы чакаючы тут, калі вы шукаеце
у пункце х, і вы збіраецеся патэлефанаваць sayName,
Вы чакаеце гэтае імя , Як мяркуецца, Боб.
Але калі вы ажыццявілі гэта аб'ект і назваў яго
сам па сабе, то зараз гэта глабальная.
І вось што я згадваў калі вы бачыце долар кропка гэтага,
вы часта не думаюць аб што адбываецца на самай справе.
Але JQuery роду мае свае ўласнае прадметна-арыентаваная мова
для барацьбы з гэтым і гэта не тое, што вы прывыклі
у JavaScript.
І я паказваю на гэта таму што гэта сапраўды важна
для напісання добра структураваная аб'ектна-арыентаваны код
у JavaScript, каб сапраўды мець добрае разуменне і разуменне
як гэта працуе і як аб'ектнай мадэлі працы
і як новы аператар працуе.
У адваротным выпадку, вы ў канчатковым з JQuery спагецці
дзе ўсё накшталт з паўсюдна
і толькі справу з DOM.
Калі вы можаце на самой справе напісаць Javascript
ў больш структураваным выглядзе, гэта робіць яго нашмат прасцей
працаваць, каб разабрацца з аддзяліць праблемы
з якія займаюцца абнаўлення DOM і справа
з фактычнай логікі і кода.
Такім чынам, давайце зірнем на Некалькі прыкладаў вакол гэтага.
Таму ў мяне ёсць некалькі прыкладаў тут.
Так што гэта ўсяго толькі просты прыклад выкарыстання аб'екта JavaScript
і дадаўшы некалькі функцый да яго і затым стварыць свайго роду
з як мініятурны прымянення.
Так што гэта вельмі проста на самай справе.
Адзінае, што яна робіць гэта спачатку запытвае ваша імя.
Так што я буду казаць, Цім, а затым вы можа змяніць сваё імя Бобу.
І вось усё гэта Прыкладанне робіць.
Але тое, што я хацеў бы адзначыць ад'ездзе як ён гэта робіць.
Так што ў мяне гэтае імя генератар аб'ект, які мае метад запуску
які просіць карыстальніка для іх імя
, Проста называючы гэта askForName
якія тут гэта робіць запрашэнні
калі імя не было прысвоена Затым ён просіць за яго зноў
па тэлефоне гэтую askForName.
А потым, як толькі ён атрымлівае імя, ён выклікае гэтае імя абнаўлення.
Так што гэта затым устанаўлівае Імя карыстальніка ў h1 тэг.
І калі імя не усталяваны, ён выдае памылку.
[Неразборліва Заўвага]
Так, вядома. Так ён усталёўвае Імя карыстальніка ў h1 тэг
па тэлефоне setDisplayName які ўсталёўвае HTML
ў полі Імя JS кантэйнера і Я папярэднічаючы ўсе мае HTML
з JS селектары толькі таму, што гэта добрая звычка
у толькі, каб зрабіць гэта не так бянтэжыць
калі вы карыстаецеся селектары як ідэнтыфікатары або класаў
для абодвух стыль і логіку
ў вашым JavaScript пярэдні канец прыкладанняў.
Таму што калі ў вас ёсць розныя групы людзей, якія працуюць
на кодавай базе, і вы ёсць селектар ёсць
што дызайнер вырашае змяніць, таму што it's -
не выглядае вялікім, таму яны хочуць паставіць у новым класе і прыняць
з ваш і вы належыце на яго ў мэтах, JavaScript,
то ваш код ламае.
Гэта добра ў якасці прэфікса і сартаваць
з, як імёнаў амаль JavaScript звязаныя класы
або атрыбуты з прэфіксам JS.
Так што гэта даволі проста, і вы можаце бачыць
ва ўсіх гэтых выпадках я называючы вярнуцца гэта ў канцы.
Так што гэта добра звычка,
каб даць вам яго ў дзейнічае вяртаецца значэння.
У askForName я не таму, што мае сэнс
што вы атрымаеце імя назад.
Але што, што дазваляе вам рабіць тое
калі вы вернецеся гэта абнаўленне назваць, ён вяртае значэнне
з setDisplayName што вяртання значэння гэтага.
І, што дазваляе сартаваць ланцугу, як вы прывыклі
ў JQuery, вярнуўшы значэнне гэтага кожны раз.
Гэта адносіцца да бягучыя аб'екты
так што вы маглі б назваць гэта кропка askForName кропка setDisplayName
і ён будзе трымаць Значэнне гэтага і дазваляюць вам
каб мець добрую ланцужок там.
А потым у - так у гэта другі прыклад.
[Паўза]
Добра.
ОК. Так што давайце ісці наперад і адкрыйце кансоль
і пайсці ў мой ўкладцы Sources.
Мы будзем поп на гэта на самай справе.
Такім чынам, у распрацоўніка Chrome інструменты, якія я ўжо згадваў,
ёсць гэты кавалак на права і -
Вы можаце ўбачыць гэты знак прыпынку хоць па змаўчанні ён чорны.
Але пры навядзенні паказальніка мышы над ім, ён кажа: "Не рабіце паўзу на выключэннях.
Націсніце на паўзу на усе выключэння. "
І калі вы пстрыкніце па ім зноў жа, гэта становіцца сінім.
І зараз у любы час, што ёсць памылка кінуты
у кодзе JavaScript, яно будзе спыніцца ў кропцы і дазваляюць вам
ацаніць, што адбываецца.
Так - І гэта сапраўды карысна Канцэпцыя збіраецца адзначыць.
І потым, калі вы націснеце зноў, атрымліваецца фіялетавы
і гэта, як правіла што я трымаю яго цалі
Гэта толькі разбівае код калі ёсць выключэнне
, Які не быў злоўлены.
Так шмат разоў у JQuery для Асобнік, яны сапраўды спрабуюць ўловаў
для праверкі або ня браўзэр ёсць нейкая магчымасць
і працягнуць адтуль.
Гэта толькі тады, калі ёсць памылка
, Які не быў злоўлены ў спробу ўлову.
Так давайце паспрабуем прадставіць імя, якое з'яўляецца пустым.
Так што я магу бачыць, што Код цяпер спыніўся
на метад updateName і я магу мышы на імёны
і паглядзець, што гэта пустая пустым.
Там ён роўны пустым.
Так што, калі не назваць кінуць новы памылкі і цяпер я магу адхіліцца
праз функцыю калонка і сказаць: "ОК,
дзе гэта ўзялося ", і убачыць, што значэнне кліентам.
Так што мае метад askForName,
setDisplayName старт і updateName.
І гэта толькі сапраўды карысны як вы можаце бачыць ёсць усе
зменныя, якія даступныя ў гэтым аб'ёме, а
як замыканне зменных таму ўсе, што зачынена
над гэтай функцыяй.
І так я бачу, што - што велічыня кліентам
і што велічыня гэта.
Так што гэта таму што мы ў JQuery роўная
на бягучы элемент DOM.
Але гэта сапраўды карысна для адладкі кода
прарвацца на памылкі, як гэта.
Яшчэ адна асаблівасць Хром Інспектар
што ў любы момант вы можаце націсніце на розных ліній
у радку, і ён будзе перапынак у месцах
дзе вы ўсталяваць кропкі супыну яны называюць.
Так што, калі я націскаю, лінія становіцца сінім.
Такім чынам, дазвольце мне працягнуць выкананне тут, добра, што зламаўся.
А цяпер давайце ўсталюем імя Алісы і націсніце кнопку Адправіць.
Так што цяпер я магу бачыць нават перш чым ён патрапіў у кропку
абнаўлення ўсё, то зараз спыніўся прама вось так я бачу
што мая гэтае імя Аліса і тады я магу працягнуць -
дазвольце мне перазагрузіце старонку.
Добра, так што зараз, што гэта пачынаючы з пачатку зноў,
ён спыніўся на гэтым лінія, і я бачу
гэтае імя ў цяперашні час вызначана.
askForName з'яўляецца якія функцыянуюць яго з'яўляецца, такім чынам, гэта таксама часта карысна
калі ў вас ёсць функцыі, якія з розных файлаў
або розныя месцы ў Код, вы можаце ўбачыць, дзе гэта,
, А затым перайсці да таго, што, ён будзе вылучыць яго.
Так добра, каб увайсці ў звычку выкарыстання сродкі адладкі
што не толькі суцешыць часопіс кропка.
Такім чынам, давайце паглядзець на другога прыкладу
што робіць больш шырокага выкарыстання прататыпы, як я згадваў.
Такім чынам, у гэтым прыкладзе
мы ствараем новы Функцыя называецца CS
і гэта капитализируются так стандартнае пагадненне
у JavaScript, калі функцыя павінна быць выкарыстаная
ў якасці канструктара, у адрозненне
каб проста нармальны Функцыя, вы выгаду яго.
Так што ў мяне капіталу CS і гэта прымае пераменнае CourseID
і courseTitle якія Я настроены на гэты CourseID,
гэта courseTitle у канструктару.
І тады я таксама ўсталяваць студэнтаў і лекцыі як пустыя масівы.
Так што прычына, што вы -
Такім чынам, прататып ўласцівасці былі затым вызначаны
тут з - так шаблон гэта проста невялікі падкрэслення
Шаблон, шаблон падкрэслення быць так, што вы можаце -
падобны на шаблонах што Давід згадаў
на сэрвэры, вы можаце проста напісаць тэг сцэнара
які не з'яўляецца JavaScript Сцэнар але тэкст HTML
і што я раблю з JQuery з'яўляецца -
гэта не перашкаджае іх адкрытым, так, там мы ідзем.
З JQuery, яна становіцца HTML значэнне гэтага пра шаблон
а затым запусціць яго праз падкрэсліваюць камунальныя бібліятэкі
рухавік шаблон.
Такім чынам, дакументацыя таму што гэта тут
па шаблоне ўтыліты
але ў асноўным вы можаце прачытаць трохі больш аб гэтым.
Але ён ацэньвае гэты радок і ператварае яго ў функцыю
, Якія мы зможам перадаваць дадзеныя ў і гэта называюць дынамічна.
Наступныя два метаду, якія я маю з'яўляюцца addStudent і addLecture.
Яны проста дадайце іх у ўнутраныя масівы, якія я ўсталяваў
у канструктару і то метад візуалізацыі.
Так, давайце створым новы Асобнік CS называецца 164
які мае гэты курс лік 164 і назва.
А потым CS50, які мае CS50 і ўвядзенне ў CS1
, А затым дадаць некалькі лекцыі студэнтам
а затым выклікаць CS50 візуалізацыі.
І калі я запускаць код, так што Я раблю, што з Eval.
Вы ніколі не хочаце выкарыстоўваць Eval, але я толькі выгляд
прымаць усе JavaScript гэта тут
і выкананне яго на лета.
Ён аказвае ў гэтай шаблон гэтыя новыя асобнікі
класа CS, якія маюць ўласцівасці, таму мы пайшлі
да канца і зрабіць addLecture і addStudent сябар.
І як я ўжо казаў таму што я вярнуцца ў гэтым,
Я магу на самой справе ланцуг іх addLecture і addStudent званкі
і ён будзе працаваць так жа добра.
Іншая асаблівасць у JavaScript гэта значыць яшчэ больш карысным
на боку сервера, дзе Вы сапраўды ў любы момант часу
калі ваша прыкладанне атрымлівае больш не ведаю, дзе вы знаходзіцеся
і гэта цяжэй ўсталяваць гэтыя асобныя кропкі супыну
што я ўжо згадваў у Інспектар Хром
выкарыстоўваць ключавое слова адладчыка.
Так што гэта проста D-Е-У-П-Г-Г-Е-Р.
І калі вы кладзе адладчык Ключавое слова ў кодзе
і ў вас ёсць - там мы ідзем, два Gs.
Калі вы кладзе адладчык Ключавое слова ў кодзе
і вы працуеце адладчык
такіх як Chrome Інспектар тут
або на боку сервера Chrome Інспектар, гэта кажа наяўнасць
, Каб спыніць выкананне ў гэтым радку кода, а затым ён дазваляе вам
пакрокава астатняй выканання кодаў.
Так што, калі я націскаю выканаць код тут, то зараз прыпынку
у гэтым адладчыка лініі, і я магу гл Добра, вось значэнне CS50
і гэта ёсць, вядома назва, вядома ID,
гэта не мае ні аднаго лекцыі, няма студэнтаў.
І тады я магу пакрокава ўся addLecture,
Я бачу, што гэта штурхае на гэтых лекцыях,
мышы на тым, што, "Hello World".
Я магу на самой справе ў Кансоль зрабіць гэта так, гэта ўстаноўлена
да бягучага аб'екту што вы цалі
Гэтая лекцыя з'яўляецца "Hello World".
І трымаць стэпінг праз столькі, колькі я хачу.
Калі я не хачу, каб крок
ў прычыны выкліку функцыі ' Я ведаю, што адбываецца
зрабіць ўдаючыся ў addLecture, ёсць гэтая кнопка прама тут
які кажа: "Крок у працягу наступных выклік функцыі ", і так я магу пайсці
да такой ступені былі я, можа быць, цікава пра што-то.
Як, напрыклад 164 візуалізацыі.
Таму ў дадзены момант, гэта будзе аказана.
Я бачу гэты шаблон з'яўляецца скампіляваны шаблон.
Я бачу ў гэтым пункце я павінны мець двух студэнтаў
і дзве лекцыі.
А тут яшчэ прататып ланцуга, што я меў на ўвазе.
Так што па змаўчанні, які пастаўляецца разам з толькі аб'екта
у JavaScript ў цэлым,
Ён пастаўляецца з двума радкі Значэнне канструктара.
А потым тыя, якія Я дадаў на сябе
з addLecture, addStudent і затым ўласцівасці
якія з'яўляюцца ўнікальнымі для гэтага Асобнік класа
як гэта было спасылацца з новага ключавога слова.
Так што давайце рабіць толькі адзін больш прыклад на гэты
а затым мы будзем крок да некаторых больш цікавыя рэчы
на боку сервера.
Так што давайце ісці наперад і адкрыць гэты апошні прыклад, які з'яўляецца -
давайце паглядзім, дзе гэта код?
Я не ведаю, дзе гэта пайшло.
Добра, добра, мы маглі б проста прапусціць над гэтым кодам, то на самай справе -
ой трымайся, я думаю, што я прапусціў табліца стыляў для кода.
Такім чынам, давайце зробім гэта крыху больш.
У гэтым прыкладзе я паказваю крыху больш ад налады
уверх па ланцужку прататыпаў,
так наладзе ў спадчыну з JavaScript.
Так што ў гэтым выпадку мы маем Каталог, які будзе
каб як мяркуецца падтрымліваць некалькі курсаў.
І так Каталог мае А.М. метады addCourse.
Так ён правярае, ці з'яўляецца курс які праходзіў у гэта асобнік
вядома, як выклікаецца з новага ключавога слова.
Так што калі вы спрабуеце адправіць
ў нечым іншым, ён будзе крычаць на вас.
Метад візуалізацыі, які будзе аказваць кожнаму з курсаў
шляхам складання яго шаблон ніжэй.
І ў нас ёсць курс якіх доступ
у гэтым выпадку базавым класам для індывідуальныя курсы аддзел.
І замест таго, каб кожны
з курсу кропкай Метад прататып кропка
або маёмасць, выкарыстоўваючы пашырыць памочнікам у бібліятэцы падкрэслення
сартаваць заходу пашырыць гэты прататып з усімі
з гэтых уласцівасцяў, што з'яўляецца карысна, крыху лягчэй чытаць.
А потым тут рабіць тое, што вядома як ўстаноўка
уверх па ланцужку прататыпаў.
Так што гэта на самай справе трохі хітрым людзям спачатку
і нават да гэтага часу зрабіўшы гэта на некаторы час, гэта свайго роду цяжка
каб абгарнуць вакол галавы.
Але хай гэта вас не палохае вас.
Так што я буду стварэннем новай -
зусім новы клас запярэчыць,, CS.
І ў канструктару,
Я кажу, што курс прымяніць гэты аргументы.
Так аргументы спецыяльны Значэнне Я думаю, вы маглі б назваць яго
у JavaScript, ключавое слова, якое мае ўсе
з усяго, што гэта прайшоў уздоўж з'яўляецца аргументы
што функцыя даступныя з аргументы выкліку,
з ключавым словам аргументаў.
Так як я тэлефаную з курсам кропка ўжыць,
гэта бягучы кантэкст з якой CS выклікаецца.
Таму, калі я заклікаю яго новым гэта - гэта значэнне CS.
І я кажу называем гэта Метад Вядома тут.
Эх шкада - называем гэта Вядома метад прама тут
але ўсталяваць значэнне гэтага каб быць усё, што значэнне
гэта прама тут.
Такім чынам, ключавое слова ўжыць дазваляе Вам роду змены стану
гэта той, што з'яўляецца, як JQuery Дапускаецца, каб разабрацца перамыкача
з гэтага на вас, як Вы праходзіце
і зрабіць DOM элементы замест аб'екта JQuery.
Так што цяпер я збіраюся ўсталяваць часовая функцыя
якая будзе захопліваць Прататып курса.
І быццам ўсталяваць яго са сваім прататыпам
а затым ўсталяваць прататып ад функцыі аб'екта CS
у новы асобнік гэтага.
Таму ў асноўным я кажучы замест гэтага -
калі я тут зрабіў CS Dot Прататып роўная новы курс.
Затым было б называючы ўсё
у гэтай функцыі канструктара,
, Якога не хачу абавязкова хацеў.
Так што ўсё, што я раблю гэта накшталт стварэння амаль
як сурагатнай функцыі, будзе мець прататып курсы
на ім і роду імітаваць прататып -
Вядома, але не робячы усё ў канструктару
і ўсталяваць, што з прататыпам.
А потым я проста дадаўшы так аддзел
у гэтым выпадку кампутар Навука для аб'екта CS.
А то ў мяне свайго роду Мост версія рабіць гэта.
Гэта не працуе ў IE9.
Дык вось чаму я хацеў паказаць роду, як -
што гэта робіць пад капотам.
Але вы можаце ўсталяваць яго у тым жа чынам
дзе эканом роўная функцыю Вядома ўжываць гэтыя аргументы
а потым кажуць эканом Dot прататыпа роўная аб'ект кропка CreateCourse
кропка прататып.
Так што гэта стварае новы аб'ект які з'яўляецца толькі прататыпам
за курс, а затым ўсталяваць аддзел там.
А цяпер давайце проста пайсці ўсталяваць адладчык тут і націсніце на рахунку.
Там мы ідзем.
Так CS164 мы бачым ланцужок прататыпаў у нас ёсць
ўласцівасці, якія былі ўсталяваць у канструктару.
Так значэння гэтыя, якія былі ўсталяваныя а затым на ланцужку прататыпаў
для аб'екта CS гэта было Аддзел Інфарматыка ўсталяваць.
А потым на асноўнай ланцужок прататыпаў,
тады маем усе метады і ўласцівасці
якія з'яўляюцца ўнікальнымі для аб'ект Вядома.
А то ў нас базавыя аб'екты.
Так што свайго роду хуткі Прыклад ланцужку прататыпаў.
І як вы можаце бачыць тут, там два значэння ў аддзеле.
Так што ёсць аддзел інфарматыкі
а затым аддзел няма ў спісе, які я сказаў
як значэнне па змаўчанні тут.
Такім чынам, ланцужок прататыпаў на самай справе проста па асобнасці
спіс спасылак.
І як ён спрабуе знайсці нерухомасць,
ён пачне ў верхняе значэнне ўзроўню.
Дык што ж гэта вызначана ў Функцыя канструктара
а затым роду спусціцца ланцужок прататыпаў адтуль.
Так, паколькі ён знайшоў, а значыць -
калі прама тут, я кажу CS50 кропка Дэпартамент,
гэта скажу Computer Science.
Але калі я кажу Var -
[Паўза]
Але калі я кажу гуманітарныя роўная новы курс
і тады я кажу гуманітарныя кропка аддзел,
Убачымся аддзел няма ў спісе таму ён адправіўся ў першы -
Я магу паглядзець на прататып Сетка тут на самай справе.
Так працягвалася першы ходзе аб'ект і ўбачыў там нічога
на ланцужку прататыпаў у гэты ўзровень для аддзела
або для значэнняў аддзела так то пераходзіць на наступны ўзровень,
Вядома, і знешні выгляд Нападаючы і знаходзіць яго.
Так што проста накшталт як спускаецца зверху ўніз
і гэта свайго роду тое, што унікальны
аб JavaScript з'яўляецца што вы можаце змяніць любы
з гэтых значэнняў у любы момант часу.
Так у канструктару або ў індывідуальны метад на аб'екце
калі я хачу ўсталяваць гэта аддзел да чаму-то новаму,
або калі я нават хачу, каб усталяваць любы з гэтых функцый
, Якія ўжо існуюць
да чаму-то новаму, Я вольны рабіць, што.
Таму ў дадзены момант у мяне ёсць CS50 кропку addLecture, выглядае так.
І калі я хачу ўсталяваць яго на CS50 addLecture проста роўная
на пусты функцыі.
Тады зараз я бачу, што гэта проста цалкам змянілася
якія вы не ў стане зрабіць яшчэ мовы
дзе вы павінны стражэй Спадчыну класаў на аснове
і ўсё роду наладзіць.
JavaScript з'яўляецца вельмі, вельмі гнуткая ў стаўленні, што.
Добра, давайце вярнуцца назад ў слайдах.
Так што, калі, напрыклад, вы заўсёды хацеў функцыю
мець прыватнасці гэта значэнне, усталяванае для яго.
Вы можаце выклікаць функцыю кропка прывязкі
і ўсталяваць, што велічыня гэта павінна быць.
Вы можаце думаць пра гэта як -
"Я спрабую думаць пра добра рэальны прыклад свету, але ",
калі вы хочаце абараніць ваш код
супраць каго-небудзь патэнцыйна назваўшы яго са значэннем
што не будзе гэтага.
Як, напрыклад AJAX зваротнага выкліку, як перавышэнне або памылак.
Тыя, як правіла, не называюць
з добрым семантычная Значэнне гэтага.
І вы, як: "Добра, я заўсёды хачу, каб гэта значэнне
аб'екта курсу што я працую з.
Або від, які я працы з у маім кодзе
, Які ўяўляе гэты ДОМ вузел, вы можаце ўсталяваць -
можна прывязаць кантэкст да гэтага а затым, калі гэта называецца пазней
на JQuery і ён не мае добрае суадносіны гэтага ён будзе прытрымлівацца
тое, што вы абмежаваныя яго.
Тады ёсць выклік функцыі былі Вы можаце паказаць кантэкст
і паказаць любую зменную колькасць аргументаў.
А тут яшчэ функцыя прымяняць якія можна перадаць
у кантэксце і то альбо масіў
або аргументы аб'екты, якія Я згадаў, як вы бачыце там.
І аргументы на любой Функцыя, якую вы называеце,
Вы можаце проста ўвесці слова "аргументы"
і ён будзе мець усе аргументы.
Ён мае «даўжыня» нерухомасць
які з'яўляецца, як Чэрвень аргументы былі на самой справе прайшло да таго, што метады
так як у JavaScript Вы можаце сартаваць заходу
з нумара зменных аргументаў.
Гэта карысна для кажучы калі гэта быў адзін аргумент,
затым выканаеце гэты шлях кода.
Калі гэта было два, вы, магчыма, хочаце прытрымлівацца іншым шляхам.
Гэта дазваляе вам мець сапраўды дынамічныя інтэрфейсы для вашых метадаў.
Вы можаце думаць аб што з JQuery
напрыклад, калі ў вас ёсць даляр кропка або звязваюцца.
І гэта свайго роду робіць розныя рэчы
адносна таго, паставіць вас адзін аргумент або два ці тры
або запусціць яго з функцыяй.
Ён выкарыстоўвае аргументы маёмасць
і аргументы даўжыня ў большасці выпадкаў
мець гэтую магію Функцыянальнасць здарыцца.
Тое, што вы не можаце зрабіць з аргументы, гэта выкарыстоўваць яго так жа,
па змаўчанні ў выглядзе масіва.
Так што вы можаце сказаць, аргументы тры і ўсталяваць яго на што-то
як вы маглі з дапамогай прызначэнне масіў.
Вы можаце выкарыстоўваць - шмат метадаў падкрэслення
як для калекцый або для працы з масівамі,
Вы можаце перадаваць дадзеныя праз аргументы і гэта зразумееце,
што Гэта аргументы Аб'ект і сартавання
з паклапаціцца аб гэтым за вас.
Але калі вы хочаце выкарыстоўваць Аргументы, якія перадаюцца
праз функцыю ў выглядзе масіва,
Вы можаце выкарыстоўваць падкрэслення кропка два масіва.
Адзін з ліку дапаможных функцый
, Якія будаваць і падкрэсліванне.