Функция на конструктора на JavaScript (с примери)

В този урок ще научите за функцията конструктор на JavaScript с помощта на примери.

В JavaScript конструкторска функция се използва за създаване на обекти. Например,

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

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

За да създадем обект от конструкторска функция, използваме newключовата дума.

Забележка : Счита се за добра практика да пишете с главна буква първата буква от вашата конструкторска функция.

Създайте множество обекти с конструкторска функция

В JavaScript можете да създавате множество обекти от конструкторска функция. Например,

 // 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

В горната програма се създават два обекта с помощта на една и съща конструкторска функция.

JavaScript тази ключова дума

В JavaScript, когато thisключова дума се използва във функция конструктор, се thisотнася до обекта, когато обектът е създаден. Например,

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

Следователно, когато даден обект осъществява достъп до свойствата, той може директно да осъществи достъп до него като person1.name.

Параметри на функцията на конструктора на JavaScript

Можете също така да създадете конструктор функция с параметри. Например,

 // 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); дава Сам

Създаване на обекти: Функция конструктор Vs Object Literal

  • Object Literal обикновено се използва за създаване на единичен обект. Функцията конструктор е полезна, ако искате да създадете множество обекти. Например,
 // 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();

Изход

 здравей Uncaught TypeError: person2.greet не е функция

В горния пример към обекта се добавят ново свойство genderи нов метод .greet()person1

Това ново свойство и метод обаче се добавят само към person1. Не можете да получите достъп genderили greet()от person2. Следователно програмата дава грешка при опит за достъпperson2.greet();

Прототип на обект на JavaScript

Можете също да добавяте свойства и методи към конструкторска функция, използвайки прототип . Например,

 // 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

За да научите повече за прототипите, посетете JavaScript Prototype.

Вградени конструктори на JavaScript

JavaScript също има вградени конструктори. Някои от тях са:

 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

В JavaScript низовете могат да се създават като обекти чрез:

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

В JavaScript числата могат да се създават като обекти чрез:

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

В JavaScript булеви числа могат да бъдат създадени като обекти чрез:

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

Забележка : Препоръчително е да използвате примитивни типове данни и да ги създавате по нормален начин, като const name = 'John';, const number = 57;иconst count = true;

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

Забележка : В JavaScript ключовата дума classе въведена в ES6 (ES2015), която също ни позволява да създаваме обекти. Класовете са подобни на конструкторските функции в JavaScript. За да научите повече, посетете JavaScript класове.

Интересни статии...