Увод у Конструктор у ЈаваСцрипт-у
Метода конструктора у ЈаваСцрипт-у је посебна метода која се користи за креирање и иницијализацију објеката унутар класе. То ради конструктор на сваком програмском језику. Оно што ЈаваСцрипт конструктор разликује од осталих је слобода у погледу синтаксе. Да бисте га боље разумели, једноставно отворите алате за програмере прегледача (Цтрл / Цмд + Схифт + Ц) и идите на картицу Конзола у прозору алата за програмере.
Овако изгледа у Цхроме-у
Ово је игралиште за већину концепата повезаних са ЈаваСцрипт-ом. Ми ћемо користити ово игралиште у овом чланку.
Врсте конструктора у ЈаваСцрипт-у
Постоје две врсте конструктора у ЈаваСцрипт-у
1. Уграђени конструктори
Ово су лако доступни конструктори који долазе у пакету са извршним окружењем. Корисник их једноставно мора позвати и прекршити, посао је завршен. Примјери уграђених конструктора су Арраи, Дате и Објецт.
2. Конструктори које дефинира корисник
То су конструктори које је програмер изјавио и дефинисао да ће их користити током апликације. Програмер такође може дефинисати својства и методе сопствених прилагођених типова. Такође су познати и као конструктори по мери. По договору, сви ЈаваСцрипт конструктори се стављају у реченицу. Овим се жели рећи особи која их користи да се ова функција мора позвати помоћу нове кључне речи.
Како конструктори раде у ЈаваСцрипт-у?
Пре него што погледамо синтаксу ЈаваСцрипт конструктора, морамо да разумемо један основни концепт ЈаваСцрипта -
- Објецт класа резимира у контексту овог чланка, сваки ЈаваСцрипт објект креира конструктор Објецт. Ако је вриједност дата током креирања објекта нула или недефинирана, Конструктор објекта ће креирати празан објект. У супротном, креираће се објект типа који је дефинисан током креирања објекта.
- Кад год је декларисан нови објект типа класе, нова кључна реч враћа референцу на ново створени објект. Овом објекту се приступа помоћу ове кључне речи унутар конструктора за иницијализацију својстава објекта.
- Мада, технички ЈаваСцрипт нема класе, али има конструкторе и прототипове који нуде сличну функционалност. У ЕЦМАСцрипт 2015, концепт наставе је представљен у ЈаваСцрипт-у. Ово је био једноставно синтактички додатак постојећем наслеђу заснованом на прототипу и није додао никакву нову функционалност језику.
Синтакса и примери конструктора у Јавасцрипт-у
1) Метода конструктора
Испод је метода конструктора. Ова метода се користи унутар прототипа класе.
Синтакса
constructor((arguments))( … )
Код
class Employee(
constructor(id, name)(
this.id = id;
this.name = name;
))
var emp1 = new Employee(123, "John");
console.log(emp1.name);
Излаз:
2) Конструктор објекта (уграђени конструктори)
Конструктор објекта се директно позива када се створи објект класе Објект. Ово ствара објект класе Објецт ако се као аргументи пренесу нулл или недефинирани параметри. У супротном, креира се објект типа задатих параметара.
Синтакса
new Object(( value ))
Или
new Array(( value ))
Или
new Date(( value ))
Или
new String(( value ))
Или
new Number(( value ))
Или
new Boolean(( value ))
Или
new Function(( value ))
Или
new Error(( value ))
Или
new RegExp(( value ))
и тако даље…
Шифра:
var name = new Object("John");
var age = new Object(28);
console.log("Name : "+name+" & Age : "+age);
Излаз:
3) Конструктори матрица и датума
На сличан начин конструктори Арраи и Дате могу се такође користити за креирање објеката одговарајућих типова.
Шифра:
var alphabets = new Array('Apple', 'Ball', 'Cat');
console.log(alphabets);
Излаз:
Шифра:
var now = new Date();
console.log(now);
Излаз:
Шифра:
var err = new Error("A user-defined error has occurred.");
console.log(err);
Излаз:
4) Прилагођени конструктори
Такођер можемо изјавити и дефинирати властите конструкторе који ће се користити током наше апликације. Погледајмо како се то може постићи.
Синтакса
function FunctionName((arguments))( … )
Код
function Book(name, author, year) (
this.name = name;
this.author = author;
this.year = year;
)
function displayBook(book)(
console.log('\'' + book.name + '\' authored by ' + book.author + ' in the year ' + book.year + '.');
)
var book1 = new Book('Java - The Complete Reference', 'Herbert Schildt', 2006);
var book2 = new Book('Let Us C', 'Yashavant Kanetkar', 2002);
var book3 = new Book('Data Structures', 'Seymour Lipschutz', 2005);
displayBook(book1);
displayBook(book2);
displayBook(book3);
Излаз:
Важност нове кључне речи
Сада се можда питате шта ако не користим нову кључну реч? Могу ли изоставити нову кључну реч? Па, пријатељу, не. Употреба нове кључне речи је од велике важности.
- ЈаваСцрипт конструктори су редовне функције. Прати их нова кључна реч која ЈаваСцрипт енгине-у поручује да се са датим својствима мора конструисати нови објект. Без нове кључне речи једноставно бисте стварали све више и више глобалних објеката.
- Нова кључна реч враћа референцу на ново створени објект. Затим ову референцу чувамо у променљивој. Без нове кључне речи, објект се креира, али не враћа се референца на објект. Објект поприма глобални домет. Једина референца на овај објект је кроз прозор прозор.
- Збуњени? Да разумемо боље са примерима. Поново размотримо горњи пример. Уклонили смо нову кључну реч из декларација објекта. Резултат је био изузетак од недефинисаних варијабли. То је зато што се без нове кључне речи новостворена референца објеката није вратила и стога није била смештена у наше променљиве боок1, боок2 и боок3. Када смо покушали да приступимо тим променљивим у методи приказа књиге, изузеће је.
Шифра:
function Book(name, author, year) (
this.name = name;
this.author = author;
this.year = year;
)
function displayBook(book)(
console.log('\'' + book.name + '\' authored by ' + book.author + ' in the year ' + book.year + '.');
)
var book1 = Book('Java - The Complete Reference', 'Herbert Schildt', 2006);
var book2 = Book('Let Us C', 'Yashavant Kanetkar', 2002);
var book3 = Book('Data Structures', 'Seymour Lipschutz', 2005);
displayBook(book1);
displayBook(book2);
displayBook(book3);
Излаз:
У истом примјеру, ако измијенимо методу књиге за приказ кроз објекте кроз опсег прозора, добићемо неочекивани излаз.
Шифра:
function Book(name, author, year) (
this.name = name;
this.author = author;
this.year = year;
)
function displayBook(book)(
console.log('\'' + window.name + '\' authored by ' + window.author +' in the year ' + window.year + '.');
)
var book1 = Book('Java - The Complete Reference', 'Herbert Schildt', 2006);
var book2 = Book('Let Us C', 'Yashavant Kanetkar', 2002);
var book3 = Book('Data Structures', 'Seymour Lipschutz', 2005);
displayBook(book1);
displayBook(book2);
displayBook(book3);
Излаз:
Сада, као вежба, направите мали браинсторминг да бисте схватили зашто добијамо овај излаз!
Конструктори сигурни за опсег
Уграђени конструктори у ЈаваСцрипт-у су конструктори сигурни за опсег. Не стварају глобално променљиве променљиве када се позивају без нове кључне речи. Стога се ови објекти могу сигурно креирати са или без нове кључне речи.
Код
function SampleFn(argument) (
// if "this" is not an instance of the constructor
// it means it was called without new
if (!(this instanceof SampleFn)) (
// call the constructor again with new
return new SampleFn(argument);
)
// The code to construct properties and methods
)
Да, и ви можете да креирате конструкторе сигурне за опсег који су дефинисани од стране корисника. Наставите, креирајте конструктор који је сигуран за обим наших књига у горњем примеру.
Закључак
Овај чланак је детаљно демонстрирао ЈаваСцрипт Цонструцторс. Ово такође помаже у разумевању рада ЈаваСцрипта. Кључна ствар која се овдје мора запамтити је да иако технички не постоје класе у ЈаваСцрипт-у, методе и прототипови пружају сличну функционалност на располагању програмеру. И да, нова кључна реч је важна.
Препоручени чланци
Ово је водич за Цонструцтор у ЈаваСцрипту. Овде смо расправљали о његовим типовима и важним методама са Како створити конструктор сигурног за опсег Такође можете проћи кроз наше дате чланке да бисте сазнали више -
- Шта Јавасцрипт може урадити?
- Шта је ЈаваСцрипт?
- Како инсталирати ЈаваСцрипт
- Деструктор на Јави
- Регек функције у Питхону (пример)
- Примери ове кључне речи
- Рад и правила инстанцеОф у Јави са примјером