>> Добре, така и днес, Аз отивам да се говори
за JavaScript и как е различен от други езици
че може да сте обичаше PHP.
Така че в последната лекция на Понеделник, ние говорихме малко
за това, което е подобно, какво е запознати между JavaScript
и PHP или Python или Ruby или C или други езици
че вече сте запознати.
Но тя всъщност JavaScript има наистина уникален вземат
от модела на обект, който прави това нещо съвсем различно
отколкото повечето езици, които ти започваш да се справим.
Така функции са нещо
на недооценена концепция в JavaScript.
Те са много по-силни, отколкото те са на други езици
тъй като те могат в - по една причина,
те са в състояние да бъде зададете като стойности.
Така че тук имаме VAR х е равно на функция
и това е първи клас стойност, която може да бъде прехвърлено
около като аргумент.
Така че не е нужно да се Декларирам функция х
и просто използвайте х в този обхват.
Можете да премине на стойността на х навсякъде навсякъде, нали знаеш,
като аргумент в друга функция
, където можете да модул износ като David споменато в възел.
Така че, следващата точка е
че функцията е възразяват в JavaScript.
Така че всъщност можете да зададете свойства като стойности
на функция и просто лечение Харесва ми това е един обект.
Така че, когато се работи с Jquery, нали знаеш, че долар
и след това се преминава селектор в нея
и му се позовават като функция.
Но тогава и вие са долар Дот AJAX.
И това не вид да има смисъл, ако си мислиш,
на функция само като нещо, което може да се позове
или се обадете.
Но JavaScript ви позволява да зададете свойства на функции
като статични свойства само с х точка someProp
Както посочих там.
Следващата точка, която сме ще отидат в един малко по-
в дълбочина е факта, че функции могат да бъдат лекувани
като класове в JavaScript.
Така че понятието на този нов оператор
което създава нова инстанция на функцията заедно с един вид
на подобно класа като тялото който идва заедно с него
и ние ще отидем в него малко повече,
Той е наречен прототип.
И това е, което го прави JavaScript много уникално в сравнение
на други езици които са клас на базата,
JavaScript е прототип на базата.
И тогава точно в дъното там
функция може просто да се нарече ясно, както сме свикнали.
Така че това не е нищо ново.
Друго нещо, което е уникално е
които масиви са в действителност обекти.
Те не са искали те са в PHP
, където можете просто да създадете нов масив.
Това всъщност е съкращение за казвайки нов масив.
И масив е всъщност подклас на обект.
Така че това е нещо, различно и аз ще отида
в малко по- подробности за това.
И възможностите за отстраняване на грешки
с JavaScript са наистина несравнимо, доколкото аз съм виждал.
Това е снимка на Chrome инспектор
които ние ще се използва за останалата
От днес на презентацията.
И за да стигнем до това, вие просто отида да подаде инструменти за разработчици
и отворен Chrome Inspector или можете да кликнете с десния бутон
и кликнете шоу елемент I Мисля, че е на HTML страница
или аз мисля, че е команда опция J отваря това.
Но ние ще отидем в това и вие действително могат да определят гранични стойности
като сте стартирали през кода на JavaScript и сортиране
на оценка на това, което местните променливи са, каква е стойността
това е и това го прави начин по-лесно отстраняване на грешки код.
И не - това не е принудена да браузър страничен код
но всъщност можете да стартирате например
на този Chrome Inspector за вашата служба страничен код
което е наистина хубаво, защото сте да преминете през ред по ред
като искане идва във вашия сървъра и да видим какво се случва
и да играе с променливите в конзолата тук.
Така че, както споменах, JavaScript е език за прототип на базата на
което означава, че съществува набор на стойности по подразбиране, които са вид
скрита за всяка функция
в обект точката прототип имот.
Така че това е нещо като хеш на просто различни стойности по подразбиране
че когато се позове на функционира с новата ключова дума,
тези са определени от подразбиране като функции
които са на разположение на инстанция.
Така че това всъщност е наистина ефективна за -
това е един ефективен начин за създаване на обекти памет мъдър
защото JavaScript по време на работа трябва да следите само
на прототипа на обекта.
Тя някак посочва, че
когато cretae нов инстанция на класа.
И вие също може да имитират наследство, както е известен
на езици, клас-базирани където имате сортиране
на като това се разпростира, че простира, че може да имитира
че в JavaScript чрез това, което се нарича
прототип верига.
И ние ще видим примери за това.
Така че, ако ви - Jquery плъгини всъщност те препоръчват Jquery
авторите да се използва долар точка Fn, за да добавите функционалност
в библиотеката JQuery.
И ние всъщност ще скочи до - Така че, на тази страница,
имаме долара - I включени Jquery.
И ако го направите долар точка в конзолата
които споменах привеждане вие нагоре през команда смяна J
или просто ще Изглед, Инструменти за разработчици, програмисти
и отидете на раздела Източници.
[Безшумен Забележка]
О, разбира се. Така че, когато аз започнах да въведете променлива,
това е авто-завършен за мен това, което е на разположение там.
Така че аз написах долар и мога виж Мисля Chrome има някои
вграден в долари, долар и долар х.
Така че точно сега аз просто искам долар и сложих в една точка.
И тогава тя ми показва всички свойства
които са на разположение върху обекта Jquery.
Но ако го направя долар дот прототип,
Сега виждам всички методи че аз съм използвана за използване
когато имам долар, селектора и тогава аз ланеца, че с,
Знаете ли, добавете клас или добавите или размазване или някоя от подобните.
Това са всъщност всички на прототипа
които под капака на JQuery създава ново копие на себе си
и някак скрива всички тези подробности от вас.
Така че точката, в която бях вземане обратно тук
с функцията, те всъщност скрие прототип от вас
и просто псевдоним го за долар Дот бел.
Така че повечето хора всъщност не осъзнават
че е прототип Под предния капак Това е. -
че можете да се включи в и добави допълнителна функционалност
за всеки Jquery например ако искате.
Така че "новата" операторът е наистина нещо трудно
да се разбере на първо време.
Когато позвъните на функция с "нов",
това е една съвсем различна начин на свикване на функцията
, като че ли току що се обади то ясно.
Така че "новата" операторът създава това, което се нарича нова инстанция
на даден обект или нов Например на, можеш да се сетиш
на обекта като клас.
И когато това се случи, стойността на това, което може да бъде запознат
с от JQuery, те някак зададете тази
какъвто и да е удобен по това време.
Те обикновено го настрои на текущата DOM възел, който сте
как минаваш като всеки или нещо подобно.
Те - е трябвало Тази стойност да бъде стойност на модел
, който сте създали с "нов", който включва всичко
по веригата на прототип и всички на методите, които ще намерят
като прототипни свойства.
Така че зависи от това как функция се нарича,
каква е стойността на това.
И това е наистина объркващо ако сте нов в JavaScript.
Но всяка функция, която се нарича има - има тази стойност.
Така че, дори ако не сте създали нов екземпляр на нещо,
Предполага се, че този да бъде глобална.
Или можете да се обадите функция по метода на повикване
където метод Приложи в JavaScript.
Можете функцията и уточни какво трябва да бъде.
Така че можете да го направите динамичен, което е много мощен
но също ви позволява да направите неща, които могат да бъдат подвеждащи
и объркващо други разработчици
ако те не се използват за този факт.
И Jquery, бих казал, което го прави още по-объркващо
като я прави удобна и да я оставяте
на текущата DOM възел.
Но простото правило да се помни, каква е стойността на този
когато търсите
на функционално повикване е това, което е останало от точката.
Така че, ако имате обект
и това е нещо, точка нещо е функцията
че се обаждате тогава първата стойност е това, което стойността
това е.
Така че тук е код, например
където аз съм създаване нов обект буквален
който е само обект създаден с фигурните скоби
и аз съм за определяне име Bob
и след това имам sayName метод, който тук -
така че вътре в този sayName ако аз х разпръснати sayName,
стойността на това е равно х, защото ляво
на точка е х. Така че, ако Аз го наричам х точка sayName,
тя ще каже Hello Bob.
И после още един пример
където аз съм действително присвояване х точка sayName, функцията
на променливата Y, които както споменах
в JavaScript вас да зададете функции
за променливи, когато пожелаете, това е наистина гъвкави по този начин,
но сега, когато аз наричам Y, той е загубил контекста на х.
Така че това сега е глобален или ако сте в строг режим,
Вярвам, че тя е нищожна или недефинирана.
Но - Така че Y не е това, което сте Очакваме тук, ако търсите
в х и ти започваш да се обадя sayName,
чакаш това име е трябвало да бъде Bob.
Но ако го смъкна предмета и го нарече
само по себе си, това сега е глобална.
И това е, което аз се спомене когато видите долар точка, това,
вие често не мисля, че на какво всъщност се случва.
Но Jquery нещо си има собствен домейн-специфичен език
за справяне с това и това не е това, което сте свикнали
в JavaScript.
И аз изтъквам това защото това е много важно
за писане на добре структурирана обектно-ориентирано код
в JavaScript наистина да има добро разбиране и схващане
за това как работи и как обектен модел работи
и начина на работа на новия оператор.
В противен случай, вие ще се окажете с Jquery спагети
където всичко е на сортиране на цялото място
и само се занимават с DOM.
Ако можете, всъщност напиши JavaScript
по по-структуриран начин, това го прави много по-лесно
да работим, за да сортирате на разделяне на опасенията
на които се занимават с актуализиране на DOM и справяне
със застроена логиката и кода.
Така че нека хвърлим един поглед към няколко примера около това.
Така че аз имам няколко примера тук.
Така че това е само един прост пример от използването на JavaScript обект на
и добавяне на няколко функции за него и след това създаване на сортиране
на подобно миниатюрно приложение.
Така че това е много проста всъщност.
Единственото нещо, което той прави, е на първо това подсказва името си.
Така че аз ще кажа, Тим и тогава може да промени името си на Боб.
И това е всичко това заявлението прави.
Но това, което бих искал да подчертая навън е как го прави.
Така че аз имам това име генератор обект, който има метод старт
който пита потребителя за името си
Обаждам се от тази askForName
което тук го прави подканата
ако името не е назначен тогава той отново пита за него
като се обадите на този askForName.
И тогава, след като тя получава името, той нарича това име актуализация.
Така че това, тогава задава Име на потребителя в етикет h1.
И ако името не е зададена, тя хвърля грешка.
[Безшумен Забележка]
О, разбира се. Така че тя настройва Име на потребителя в h1 таг
като се обадите на setDisplayName който определя HTML
в името на контейнера и JS Аз съм префикс всички мои HTML
с JS селектори, само защото това е един добър навик да
в само за да се това не е толкова объркващо
когато използвате селектори като ID или класове
както за стил и за логика
във вашата JavaScript Предните крайни приложения.
Защото, ако имате различна групи от хора, които работят
на база код и вие имат селектор има
че дизайнерът реши да се промени, защото това е. -
не изглежда голяма, така че те искат да се сложи в нов клас и да вземат
от вашите и ние се осланяме върху него за целите на JavaScript,
след това кода си почивки.
Хубаво е да се префикс и сортирате
на пространство от имена като почти JavaScript-свързани класове
или атрибути с префикс на JS.
Така че това е доста проста и можете да видите
във всички тези случаи аз съм обажда се върне това в края.
Така че това е една добра навик да влезе,
да ви го дам на валидна стойност връщане.
В askForName аз не съм защото, който има смисъл
че вие ​​ще получите име обратно.
Но това, което позволява на този можете да направите, след това
ако се върне тази актуализация име, това е връщане на стойност
на които е setDisplayName връщане на стойността на този.
И това ви позволява да сортирате на верига, както сте свикнали
в Jquery чрез връщане стойността на това всеки път.
Това се отнася до текущи обекти
така може да се нарече това дот askForName точка setDisplayName
и то да се задържи на стойност на това и позволи
да имат хубава верига там.
И след това в - така че в този втори пример.
[Pause]
Добре.
OK. Така че нека да вървим напред и да се отворят конзолата
и отивам да си раздела Източници.
Ще се появи това всъщност.
Така че в разработваната Chrome инструменти, които споменах,
там е това парче на право и -
можете да видите този знак стоп въпреки че по подразбиране, това е черен.
Но когато мишката върху него, да го казва: "Да не се спрете на изключения.
Кликнете на паузата на всички изключения. "
И когато щракнете върху него отново, тя се оцветява в синьо.
И сега по всяко време, че има грешка хвърлен
в JavaScript код, ще спре на мястото, а ти позволи
да се оцени това, което се случва.
Така че - и това е наистина полезен концепция е на път да се отбележи,.
И тогава, ако щракнете върху отново, тя се превръща лилаво
и това е обикновено това, което я държи инча
Той разгражда само кода когато там е изключение
който не е бил заловен.
Така че много пъти в Jquery за Например, те се опитват улов
да се тества дали даден браузър или не има някаква способност
и ще продължи от там.
Това е само когато има грешка
че не е хванат в опит за улов.
Така че нека да се опитаме и да представят име, което е празно.
Така че мога да се види, че сега код е спрян
по метода на updateName И мога да мишката върху имената
и да видим, че е празна, за да празно.
Там това е равно на празно.
Така че, ако не назове хвърлят нова грешка и сега мога да се върнем назад
чрез функцията колона и да каже: "Добре,
къде дойде това, "и виж каква е стойността на клиент.
Така че това е метод askForName,
setDisplayName старт и updateName.
И това е само един наистина полезен начин можете да видите имате всички
променливи, които са на разположение в този обхват, както и
като подлежащи на закриване, променливи, така че всичко, което е затворен
над от тази функция.
И така, аз може да се види, че - каква е стойността на клиент
и каква е стойността на това.
Така че това, защото ние сме в Jquery е равен
на текущата DOM елемент.
Но това е наистина полезно за отстраняване на грешки код
да пробие на грешки като тази.
Друга особеност на Chrome Inspector е
че във всеки един момент можете да кликнете върху различните линии
в ред и това ще пробие в местата
, където можете да задавате точки на прекъсване те са по-долу.
Така че, ако кликнете, за Онлайн се оцветява в синьо.
Така че нека да продължат изпълнение тук, добре, че се счупи.
А сега нека да зададете име Алис и натиснете Изпращане.
Така че сега мога да видя дори преди да го имам до точката
актуализиране на всичко, това е сега спря точно тук, така че аз може да видите
че ми това име е Алис и след това мога да продължа -
позволете ми да се презарежда страницата.
Добре, така че сега, че това е като се започне от начало отново,
го е спрял на този линия и мога да видя
това име е в момента неопределено.
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 че е още по-полезен
на сървъра страна, където наистина във всеки даден момент
ако вашето приложение получава по-голям не знам къде се намирате
и е по-трудно да се определи тези отделни точки на прекъсване
които споменах в инспекторът Chrome е
да използвате дебъгер ключова дума.
Така че това е просто D-E-B-U-G-G-E-R.
И когато ви постави дебъгер ключова дума в кода си
и имате - там да отидем, две Gs.
Когато поставите дебъгер ключова дума в кода си
и бягаш дебъгер
като Chrome Инспектор тук
или от страна на сървъра Chrome Инспектор, тя разказва JavaScript
да спре изпълнението на тази линия на код и след това ви позволява
да се засили през останалата на изпълнението на кодове.
Така че, ако щракнете върху Изпълни код тук, това е вече спиране
На този дебъгер линия и мога виж OK, ето каква е стойността на CS50
и това е имам разбира се заглавие, разбира ID,
тя има не лекции, няма ученици.
И тогава мога да преминете през цялата addLecture,
Мога да видя това е бутане към тези лекции,
мишката върху това, "Hello World".
Мога всъщност в на конзола направите това, така че това е зададено
към текущия обект че сте влезли
Тази лекция е "Hello World".
И имайте степинг през толкова, колкото искам.
Ако аз не искам да се оттегли
в извикване на функция "кауза Знам какво се случва
да се направи да навлиза в addLecture, има този бутон тук
в която се казва "Step през следващите извикване на функция ", и за да мога да отида
до точката, бяха, че съм може би чудех за нещо.
Като например 164 направят.
Така че в този момент, това е ще бъдат предоставени.
Мога да видя този шаблон е съставила шаблона.
Мога да видя в този момент I трябва да има двама студенти
и две лекции.
И тогава там е прототип верига, която имах предвид.
Така че едно по подразбиране, който идва заедно с просто обект
в JavaScript като цяло,
той идва с два низ стойност на конструктор.
И след това на тези, които Аз сте добавили върху себе си
с addLecture, addStudent и след това свойствата
, които са уникални за този инстанция на класа
тъй като тя е извикана с новата ключова дума.
Така че нека да направим само едно повече пример на този
и след това ще засили до известна по-интересни неща
на сървъра страна.
Така че нека да вървим напред и да се отвори този последен пример, който е -
нека да видим, къде е кода?
Аз не знам къде е това отиде.
Добре, добре, ние може просто да пропуснете над този код, след това в действителност -
О, дръж се, мисля, че съм пропуснал на стила лист за кода.
ОК, така че нека да се направи това е малко по-голям.
В този пример, аз показвам малко повече от настройката
нагоре по веригата на прототип,
така че създаването на наследството с JavaScript.
Така че в този случай, ние имаме каталог, който ще
да се предполага, че поддържа многократни курсове.
И така, има каталог един методи addCourse.
Така той проверява дали хода който е приет през е инстанция
разбира като позоваване с новата ключова дума.
Така че, ако се опитате и да изпратите
в нещо по-различно, то ще ти викам.
Направи метод, който ще направи всеки от курсовете
чрез съставяне на своя шаблон по-долу.
И ние имаме хода който достъп
в този случай на базовия клас за индивидуални курсове отдел.
И вместо да определя всяка
на точката разбира метод прототип точка
или имущество, използвайки обхване помощник в долна библиотеката
да сортирате на повикване удължи този прототип с всички
на тези свойства, който е полезен, малко по-лесно да се чете.
И тогава тук правиш това, което е известно като създаването
нагоре по веригата на прототип.
Така че това всъщност е малко труден за хората в първа
и дори все още го е направил това за известно време, това е нещо трудно
да увийте главата си наоколо.
Но нека това не ви плаши.
Така че аз съм по създаването на нова -
един изцяло нов клас възрази тук, CS.
И в конструктора,
Казвам, разбира се Прилагайте тази аргументи.
Така че аргументи е специална стойност Предполагам, бихте могли да го наречем
в JavaScript, за дума, която има всички
на всичко, което е минаваше е аргументи
тази функция са достъпни с аргументите наричат,
с ключовата дума аргументи.
Така, както аз се обаждам Разбира се с точка, се прилагат,
това е сегашния контекст , с която CS се обади.
Така че, когато мога да го извиквате с нов това е - това е стойност на CS.
И аз казвам, наричаме това Разбира метод тук.
О, съжалявам - наричаме това метод разбира се тук
но определя стойността на този да бъде независимо от стойността
това е точно тук.
Така че прилага дума позволява можете някак да се промени държавата
на това, което е как Jquery е позволено да сортирате на превключвател
от това на вас като , което става чрез
и да направи DOM елементи вместо на обекта Jquery.
Така че сега аз отивам да настроите временно функция
която ще грабне прототип на курса.
И някак да го настроите да му прототип
и след това задайте прототип на функция обект CS
за нов екземпляр на това.
Така че основно съм казвайки вместо -
ако съм тук направих CS точка прототип равнява нов курс.
Тогава би било вика всичко
в този конструктор функция,
които аз не бих непременно исках.
Така че всичко, което правя е сортиране на създаване почти
като заместител на функция, която ще има прототип курсове
върху него и сортиране на имитира прототип -
хода, но без да прави всичко в конструктора
и определя, че до прототипа.
И тогава аз съм просто добавяйки така катедрата
в този случай е Computer Науката за обекта CS.
И тогава имам нещо като мост версия за правене на това.
Тя не работи в IE9.
Така че това е защо аз исках да покажа нещо как -
какво се прави под капака.
Но можете да го настроите по същия начин
където Econ равнява функция Разбира се прилагат тези аргументи
и след това казват Econ точка прототип се равнява на обект точка CreateCourse
дот прототип.
Така че това е създава нов обект който е само прототип
за време и след това настроите отдел там.
Така че сега нека просто отидете зададете дебъгер тук и кликнете върху Изпълни.
Ето.
Така CS164 можем да видим прототип верига ние имаме
свойства, които са били заложена в конструктора.
Така стойностите на тези, които са били определени и след това по веригата на прототип
за обекта CS имаше настроите отдел Computer Science.
И след това по отношение на базисните прототип верига,
тогава имаме цялата методи и свойства
, които са уникални за обект разбира се.
И тогава имаме базовите обекти.
Така че този вид на бърз например на веригата на прототип.
И както можете да видите тук, там две стойности на отдел.
Така че има отдел на компютърните науки
и след това отдел които не са изброени, които казах
като стойност по подразбиране тук.
Така веригата на прототип всъщност е само поединично
Списък на връзката.
И тъй като той се опитва да намиране на имот,
тя ще започне в върхово ниво.
Така че това, което е в определените в функцията конструктор
и след това нещо като слизат на прототип верига от там.
Така че, тъй като го намерих, така че -
ако точно тук, аз казвам CS50 точка отдел,
тя ще каже Computer Science.
Но ако кажа, VAR -
[Pause]
Но ако кажа, хуманитарни науки се равнява на нов курс
и после казват, че хуманитарните дот отдел,
Ще видя отдел не са изброени защото тя заминава за първо -
Мога да гледам прототипа верига тук всъщност.
Така че отидох първо към курса възрази и видя че няма нищо
на веригата на прототип това ниво за департамент
или за стойностите на отдела, така тогава тя скача на следващото ниво,
курса и изглежда препраща там и го намери.
Така че просто нещо като слиза от върха надолу
и това е нещо като нещо, което е уникално
за JavaScript е , които можете да промените някоя
на тези стойности в всеки даден момент.
Така че в конструктора или в индивидуален метод на обекта
ако искам да настроите тази отдел към нещо ново,
или ако аз дори да искате да настроите всяка от тези функции
, които са вече налице
към нещо ново, Аз съм свободен да прави това.
Така че точно сега имам CS50 точка addLecture, изглежда като че.
И ако искам да го настроите да CS50 addLecture просто се равнява на
да празен функция.
Тогава вече мога да видите, че е просто напълно променен
които вие не сте в състояние да се направи още езици
където ще трябва по-строг клас на базата наследство
и всичко е вид, създаден.
JavaScript е много, много гъвкав по отношение на това.
ОК, нека да скочи обратно в слайдовете.
Така че, ако например сте би искал винаги функция
да има специално тази стойност, определена за него.
Можете да се обадите функция точка свързват
и определя каква е стойността на това трябва да бъде.
Можете да мислите за него като -
"Опитвам се да се сетя за по- добър пример, но в реалния свят ",
ако искате да защитите вашия код
срещу някой потенциално наричайки го със стойност
че не би било това.
Като например AJAX обратно повикване като излишък или на грешка.
Тези, които обикновено не се наричат
с добра семантична стойност на това.
И вие сте като: "Добре, аз винаги Искам това да е стойността
на обекта на курс че аз съм на работа с.
Или мнението, което съм работа с в моя код
че представлява този DOM възел, можете да настроите -
Вие може да се свърже към този контекст и след това, когато тя се нарича по-късно
от JQuery и тя не разполага с добра стойност на това, че ще се придържаме
към това, което тя граничи с.
Тогава там е извикване на функция се можете да укажете контекста
и определяне на променлива брой аргументи.
И тогава там е функция прилага който може да премине
в контекста и след това или масив
или аргументите обекти, които Споменах, като се видим там.
И аргументите в някоя функция, която ти се обадя,
можете просто да напишете в думата "аргументи"
и това ще имате всичко аргументите.
Той има "дължина" имот
което е по какъв начин да са аргументи всъщност предава, че методите
тъй като в JavaScript можете да сортирате на повикване
с различен брой от аргументи.
Това е полезно да се казва, ако това имаше един аргумент,
след това следвайте този код пътека.
Ако тя имаше две, може да се искат да следват друг начин.
Тя ви позволява да имате наистина динамични APIs за вашите методи.
Можете да мислите за че с Jquery
като, когато имате долар точка върху или обвързване.
И това нещо прави различни неща
за това дали ще ви постави един аргумент или две или три
или да го започнете с функция.
Тя използва аргументите имот
и аргументите дължина в много случаи
да има тази магия функционалност се случи.
Нещата, които не могат да правят с аргументи се да я използват само
по подразбиране като масив.
Така че можете да кажете аргументи три и да го настроите на нещо
както бихте могли с помощта на заданието масив.
Можете да използвате - много на методите за подчертаване
нито за колекции или за работа с масиви,
може да премине в аргументи и това ще осъзнае
че това е една аргументи обект и вид
на да се грижи за това за вас.
Но ако искате да използвате аргументи, които са преминали
чрез функция като масив,
можете да използвате долна Дот два масива.
Един от броя на комунални функции
, които се изгради, за да се подчертае.