ЈаваСцрипт је устаљени језик, али је само додао подршку за класично објектно оријентисано програмирање (ООП) у ЕС6. Све док није додао карактеристике као што су декларације класа, ЈаваСцрипт је управљао ООП-ом користећи мање познату парадигму засновану на прототиповима. Са било којим приступом, међутим, можете креирати сложене апликације које користе функције засноване на објектима.
Конструктор у прототипском ЈаваСцрипт-у изгледа као свака друга функција. Главна разлика је у томе што ту функцију конструктора можете користити за креирање објеката.
Шта је конструктор у ЈаваСцрипт-у?
Конструктори су један од основне концепте објектно оријентисаног програмирања. Конструктор је функција коју можете користити за креирање инстанце објекта. Поред креирања новог објекта, конструктор специфицира својства и понашања која ће му припадати.
Синтакса конструктора
функцијаНамеОфЦонструцтор() {
тхис.проперти1 = "Проперти1";
тхис.проперти2 = "Проперти2";
тхис.проперти3 = "Проперти3";
}
Можете креирати конструктор са
функција кључна реч јер је у суштини као и свака друга функција. Међутим, конструктори се придржавају следећих конвенција:- Да бисте их разликовали од других функција, користите име за свој конструктор које почиње великим словом.
- Конструктори користе ово кључна реч другачије. Унутар конструктора, ово се односи на нови објекат који ће конструктор креирати.
- За разлику од ЈаваСцрипт функција, конструктори дефинишу својства и понашања уместо да враћају вредности.
Коришћење конструктора за креирање нових објеката
У ЈаваСцрипт-у, коришћење конструктора за креирање објекта је лак задатак. Ево једноставног конструктора са позивом који следи:
функцијаУченик() {
тхис.наме = "Глориа";
тхис.гендер = "Женско";
ово.аге = 19;
}
дозволити фемалеСтудент = Нова Ученик();
У овом примеру, студенткиња је објекат створен од Ученик конструктор. Користити Нова кључну реч за позивање функције као конструктора. Ова кључна реч говори ЈаваСцрипт-у да креира нову инстанцу Ученик. Не би требало да позивате ову функцију без Нова кључна реч јер ово унутар конструктора неће указивати на нови објекат. Након изградње, студенткиња има сва својства Ученик. Овим својствима можете приступити и мењати их као што бисте то урадили са било којим другим објектом.
Важне ствари које треба знати о ЈаваСцрипт конструкторима
Рад са конструкторима може бити тако напоран, а у исто време може бити и лак задатак. Ево неколико важних ствари које сваки програмер треба да зна о раду са конструкторима.
Коришћење конструктора са аргументима
Можете проширити конструктор за примање аргумената. Ово је веома важно ако желите да пишете прилагодљив и флексибилан код.
Кад год креирате објекат из конструктора, објекат ће наследити сва својства декларисана у конструктору. На пример, тхе студенткиња које сте креирали изнад ће имати својства име, роду, и старости са фиксним почетним вредностима. Иако можете ручно да промените свако својство, било би пуно посла да пишете програм користећи много објеката.
Срећом, ЈаваСцрипт конструктори могу прихватити параметре, као и свака друга функција. Можете променити Ученик конструктор да прихвати два параметра:
функцијаУченик(име, пол) {
ово.наме = име;
ово.гендер = род;
ово.аге = 19;
}
Сви објекти креирани од горе наведеног ће имати старости подешен на 19. Можете дизајнирати свој конструктор на овај начин ако постоји својство које желите да сви објекти имају.
Сада можете дефинисати јединствене објекте из истог конструктора преношењем различитих аргумената.
Аргументи чине конструкторе флексибилнијим. Они штеде време и подстичу чист код.
Дефинисање метода објеката
Метода је својство објекта које је функција. Методе побољшавају ваш код у ООП-у јер додаје различита понашања вашим објектима. Ево примера:
функцијаУченик(име, пол) {
ово.наме = име;
ово.гендер = род;
ово.аге = 19 ;
ово.саиНаме = функција () {
повратак`Зовем се ${наме}`;
}
}
Горе наведено додаје функцију саиНаме конструктору.
Претпоставимо да користите овај конструктор да креирате објекат који чувате у променљивој, студенткиња. Затим можете позвати ову функцију помоћу кода испод:
студенткиња.саиНаме()
Прототип
Раније смо стварали Ученик на начин да ће све њене инстанце имати ан старости имовине у вредности од 19. Ово ће резултирати дуплирањем променљиве за сваку Ученик инстанце коју креирате.
Да би се избегло ово дуплирање, ЈаваСцрипт користи концепт прототипова. Сви објекти креирани из конструктора деле својства његовог прототипа. Можете додати старости власништво до Ученик прототип као што је приказано испод:
Студент.прототипе.аге = 19;
Радећи ово, сви примери Ученик имаће старости имовина. Изјављивање својства прототипа је начин да смањите дупликат кода у вашој апликацији. То чини ваш код што је више могуће стандардним.
Својство прототипа може бити објекат
Можете додати својства прототипа појединачно као што је објашњено изнад. Али ако имате много својстава за додавање, ово може бити незгодно.
Као алтернативу, можете садржати сва својства која су вам потребна у новом објекту. Радећи ово, подесићете сва својства одједном. На пример:
Студент.прототипе = {
године: 19,
трка: "бео",
инвалидност: "Ниједан"
}
Не заборавите да подесите конструктор својство приликом постављања прототипова на нови објекат.
Студент.прототипе = {
конструктор: Ученик,
године: 19,
трка: "бео",
инвалидност: "Ниједан"
}
Можете користити ово својство да проверите која функција конструктора је креирала инстанцу.
Супертипови и наслеђе
Наслеђе је метод који програмери користе за смањење грешака у својим апликацијама. То је начин да се придржавате Не понављај се (ДРИ) принцип.
Претпоставимо да имате два конструктора -Ученик и Учитељу— који имају два слична својства прототипа.
Студент.прототипе = {
конструктор: Ученик,рециНаме: функција () {
повратак`Зовем се ${наме}`;
}
}Теацхер.прототипе = {
конструктор: Учитељ,
рециНаме: функција () {
повратак`Зовем се ${наме}`;
}
}
Оба ова конструктора дефинишу саиНаме метод, идентично. Да бисте избегли ово непотребно дуплирање, можете креирати а супертип.
функцијаИндивидуалДетаилс(){};
ИндивидуалДетаилс.прототипе = {
конструктор: ИндивидуалДетаилс,
рециНаме: функција () {
повратак`Зовем се ${наме}`;
}
};
Затим можете уклонити саиНаме од оба конструктора.
Да бисте наследили својства од супертипа, користите Објецт.цреате(). Постављате прототип оба конструктора на инстанцу супертипа. У овом случају постављамо Ученик и Учитељу прототипова за инстанцу ИндивидуалДетаилс.
Овде је:
Студент.прототип = Објекат.цреате (ИндивидуалДетаилс.прототипе);
Наставник.прототип = Објекат.цреате (ИндивидуалДетаилс.прототипе);
Чинећи то, Ученик и Учитељу наследити сва својства супертипа, ИндивидуалДетаилс.
Овако се вежба ДРИ у ООП користећи супертипове.
Конструктори су мењачи игре
Конструктори су кључна компонента ЈаваСцрипт-а, а овладавање њиховом функционалношћу је кључно за развој ООП ЈаваСцрипт апликација. Можете користити конструктор за креирање објеката који деле својства и методе. Такође можете користити наслеђивање за дефинисање хијерархије објеката.
У ЕС6 можете користити класа кључна реч за дефинисање класичних објектно оријентисаних класа. Ова верзија ЈаваСцрипт-а такође подржава а конструктор кључна реч.