Funkcija konstruktora JavaScript (s primjerima)

U ovom ćete tutorijalu uz primjere naučiti o funkciji konstruktora JavaScript.

U JavaScriptu se konstruktorska funkcija koristi za stvaranje objekata. Na primjer,

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

U gornjem primjeru function Person()je funkcija konstruktora objekta.

Da bismo stvorili objekt iz funkcije konstruktora, koristimo newključnu riječ.

Napomena : Smatra se dobrom praksom pisanje velikog slova vaše funkcije konstruktora velikim slovima.

Stvorite više objekata s konstruktorskom funkcijom

U JavaScriptu možete stvoriti više objekata iz funkcije konstruktora. Na primjer,

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

U gore navedenom programu izrađuju se dva objekta pomoću iste funkcije konstruktora.

JavaScript ovu ključnu riječ

U JavaScript-u, kada se thisključna riječ koristi u funkciji konstruktora, thisodnosi se na objekt kada je objekt stvoren. Na primjer,

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

Stoga, kada objekt pristupa svojstvima, može izravno pristupiti svojstvu kao person1.name.

Parametri funkcije JavaScript konstruktora

Također možete stvoriti funkciju konstruktora s parametrima. Na primjer,

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

U gornjem primjeru proslijedili smo argumente konstruktoru tijekom stvaranja objekta.

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

To omogućuje da svaki objekt ima različita svojstva. Kao što je gore prikazano,

console.log(person1.name); daje John

console.log(person2.name); daje Sam

Stvaranje objekata: Funkcija konstruktora protiv doslovnog objekta

  • Object Literal obično se koristi za stvaranje jednog objekta. Funkcija konstruktora korisna je ako želite stvoriti više objekata. Na primjer,
 // using object literal let person = ( name: 'Sam' )
 // using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person();
  • Svaki objekt stvoren iz funkcije konstruktora jedinstven je. Možete imati ista svojstva kao funkcija konstruktora ili dodati novo svojstvo jednom određenom objektu. Na primjer,
 // using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person(); // adding new property to person1 person1.age = 20;

Sada je ovo agesvojstvo jedinstveno za person1objekt i nije mu dostupno person2.

Međutim, ako se objekt kreira s literarnim objektom i ako se varijabla definira s tom vrijednošću objekta, sve promjene u vrijednosti varijable promijenit će izvorni objekt. Na primjer,

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

Kada se objekt kreira s objektnim literalom, bilo koja objektna varijabla izvedena iz tog objekta djelovat će kao klon izvornog objekta. Stoga će se svaka promjena koju napravite na jednom objektu odraziti i na drugom objektu.

Dodavanje svojstava i metoda u objekt

Svojstva ili metode možete dodati u objekt poput ovog:

 // 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();

Izlaz

 pozdrav Neuhvaćeni TypeError: person2.greet nije funkcija

U gornjem primjeru, novo svojstvo genderi nova metoda greet()dodaju se person1objektu.

Međutim, ovo novo svojstvo i metoda samo su dodani u person1. Ne možete pristupiti genderili greet()s person2. Stoga program daje pogrešku kada pokušavamo pristupitiperson2.greet();

JavaScript prototip objekta

Također možete dodati svojstva i metode u funkciju konstruktora pomoću prototipa . Na primjer,

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

Da biste saznali više o prototipovima, posjetite JavaScript prototip.

JavaScript ugrađeni konstruktori

JavaScript također ima ugrađene konstruktore. Neki od njih su:

 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

U JavaScriptu se nizovi mogu stvoriti kao objekti pomoću:

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

U JavaScriptu se brojevi mogu stvoriti kao objekti na način da:

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

U JavaScriptu logičke vrijednosti mogu se stvoriti kao objekti na način da:

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

Napomena : Preporučuje se upotreba primitivnih vrsta podataka i njihovo stvaranje na normalan način, kao što su const name = 'John';, const number = 57;iconst count = true;

Ne biste trebali deklarirati nizove, brojeve i logičke vrijednosti kao objekte jer usporavaju program.

Napomena : U JavaScript je ključna riječ classuvedena u ES6 (ES2015) koji nam također omogućuje stvaranje objekata. Klase su slične funkcijama konstruktora u JavaScript-u. Da biste saznali više, posjetite Java tečajeve.

Zanimljivi članci...