Функција конструктора ЈаваСцрипт (са примерима)

У овом упутству ћете научити о функцији конструктора ЈаваСцрипт помоћу примера.

У ЈаваСцрипт-у се функција конструктора користи за креирање објеката. На пример,

 // constructor function function Person () ( this.name = 'John', this.age = 23 ) // create an object const person = new Person();

У горњем примеру function Person()је функција конструктора објекта.

Да бисмо креирали објекат од функције конструктора, користимо newкључну реч.

Напомена : Сматра се добром праксом писање великих слова вашег почетног слова функције конструктора.

Направите више објеката помоћу функције конструктора

У ЈаваСцрипт-у можете да креирате више објеката из функције конструктора. На пример,

 // constructor function function Person () ( this.name = 'John', this.age = 23, this.greet = function () ( console.log('hello'); ) ) // create objects const person1 = new Person(); const person2 = new Person(); // access properties console.log(person1.name); // John console.log(person2.name); // John

У горњем програму, два објекта се креирају помоћу исте функције конструктора.

ЈаваСцрипт ову кључну реч

У ЈаваСцрипт-у, када се thisкључна реч користи у функцији конструктора, thisодноси се на објекат када се објекат креира. На пример,

 // constructor function function Person () ( this.name = 'John', ) // create object const person1 = new Person(); // access properties console.log(person1.name); // John

Дакле, када објекат приступа својствима, може директно приступити својству као person1.name.

Параметри функције ЈаваСцрипт конструктора

Такође можете створити функцију конструктора са параметрима. На пример,

 // constructor function function Person (person_name, person_age, person_gender) ( // assigning parameter values to the calling object this.name = person_name, this.age = person_age, this.gender = person_gender, this.greet = function () ( return ('Hi' + ' ' + this.name); ) ) // creating objects const person1 = new Person('John', 23, 'male'); const person2 = new Person('Sam', 25, 'female'); // accessing properties console.log(person1.name); // "John" console.log(person2.name); // "Sam" 

У горњем примеру смо током креирања објекта проследили аргументе конструкторској функцији.

 const person1 = new Person('John', 23, 'male'); const person2 = new Person('Sam', 25, 'male');

То омогућава да сваки објекат има различита својства. Као што је приказано горе,

console.log(person1.name); даје Јован

console.log(person2.name); даје Сем

Направите објекте: Конструктор Функција Вс Објецт Литерал

  • Објецт Литерал се обично користи за стварање једног објекта. Функција конструктора корисна је ако желите да креирате више објеката. На пример,
 // using object literal let person = ( name: 'Sam' )
 // using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person();
  • Сваки објекат креиран из функције конструктора је јединствен. Можете имати иста својства као функција конструктора или додати ново својство једном одређеном објекту. На пример,
 // using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person(); // adding new property to person1 person1.age = 20;

Сада је ово ageсвојство јединствено за person1објект и није доступно за person2објекат.

Међутим, ако се објекат креира са објектним литералом и ако је променљива дефинисана том вредношћу објекта, све промене вредности променљиве промениће изворни објекат. На пример,

 // using object lateral let person = ( name: 'Sam' ) console.log(person.name); // Sam let student = person; // changes the property of an object student.name = 'John'; // changes the origins object property console.log(person.name); // John

Када се објекат креира са објектним литералом, било која променљива објекта изведена из тог објекта деловаће као клон оригиналног објекта. Стога ће се свака промена коју направите на једном објекту одразити и на другом.

Додавање својстава и метода у објекту

Можете додати својства или методе у објекат попут овог:

 // constructor function function Person () ( this.name = 'John', this.age = 23 ) // creating objects let person1 = new Person(); let person2 = new Person(); // adding property to person1 object person1.gender = 'male'; // adding method to person1 object person1.greet = function () ( console.log('hello'); ) person1.greet(); // hello // Error code // person2 doesn't have greet() method person2.greet();

Оутпут

 здраво Унцаугхт ТипеЕррор: персон2.греет није функција

У горњем примеру, новом својству genderи новој методи greet()додаје се person1објекат.

Међутим, ово ново својство и метода се само додају у person1. Не можете приступити genderни greet()са кога person2. Отуда програм даје грешку када покушавамо да приступимоperson2.greet();

ЈаваСцрипт прототип објекта

Такође можете додати својства и методе у функцију конструктора користећи прототип . На пример,

 // constructor function function Person () ( this.name = 'John', this.age = 23 ) // creating objects let person1 = new Person(); let person2 = new Person(); // adding new property to constructor function Person.prototype.gender = 'Male'; console.log(person1.gender); // Male console.log(person2.gender); // Male

Да бисте сазнали више о прототиповима, посетите ЈаваСцрипт прототип.

ЈаваСцрипт уграђени конструктори

ЈаваСцрипт такође има уграђене конструкторе. Неки од њих су:

 let a = new Object(); // A new Object object let b = new String(); // A new String object let c = new Number(); // A new Number object let d = new Boolean(); // A new Boolean object

У ЈаваСцрипт-у, стрингови се могу креирати као објекти:

 const name = new String ('John'); console.log(name); // "John"

У ЈаваСцрипт-у, бројеви се могу креирати као објекти:

 const number = new Number (57); console.log(number); // 57

У ЈаваСцрипт-у логичке вредности могу да се креирају као објекти:

 const count = new Boolean(true); console.log(count); // true

Напомена : Препоручује се употреба примитивних типова података и њихово креирање на уобичајен начин, као што су const name = 'John';, const number = 57;иconst count = true;

Не бисте требали декларирати низове, бројеве и логичке вриједности као објекте јер успоравају програм.

Напомена : У ЈаваСцрипт је кључна реч classуведена у ЕС6 (ЕС2015) који нам такође омогућава стварање објеката. Класе су сличне функцијама конструктора у ЈаваСцрипт-у. Да бисте сазнали више, посетите ЈаваСцрипт класе.

Занимљиви Чланци...