Funkcija konstruktorja JavaScript (s primeri)

V tej vadnici boste s pomočjo primerov spoznali funkcijo konstruktorja JavaScript.

V JavaScript se za ustvarjanje predmetov uporablja konstruktorska funkcija. Na primer

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

V zgornjem primeru function Person()je funkcija konstruktorja objekta.

Za ustvarjanje predmeta iz funkcije konstruktorja uporabimo newključno besedo.

Opomba : Dobra praksa je, da prvo črko funkcije konstruktorja uporabite z veliko začetnico.

Ustvarite več predmetov s konstruktorsko funkcijo

V JavaScript lahko iz funkcije konstruktorja ustvarite več predmetov. Na primer

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

V zgornjem programu sta dva predmeta ustvarjena z isto funkcijo konstruktorja.

JavaScript to ključno besedo

V JavaScript, ko se thisključna beseda uporablja v konstruktorski funkciji, se thisnanaša na objekt, ko je objekt ustvarjen. Na primer

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

Ko torej objekt dostopa do lastnosti, lahko neposredno dostopa do lastnosti kot person1.name.

Parametri funkcije konstruktorja JavaScript

Ustvarite lahko tudi konstruktorsko funkcijo s parametri. Na primer

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

V zgornjem primeru smo med ustvarjanjem predmeta funkciji konstruktorja poslali argumente.

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

To omogoča vsakemu objektu različne lastnosti. Kot je prikazano zgoraj,

console.log(person1.name); daje Janez

console.log(person2.name); daje Sam

Ustvari predmete: konstruktorjeva funkcija v primerjavi z dobesednim objektom

  • Object Literal se običajno uporablja za ustvarjanje enega samega predmeta. Funkcija konstruktorja je uporabna, če želite ustvariti več predmetov. Na primer
 // using object literal let person = ( name: 'Sam' )
 // using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person();
  • Vsak objekt, ustvarjen iz funkcije konstruktorja, je unikaten. Lahko imate enake lastnosti kot funkcija konstruktorja ali dodate novo lastnost določenemu predmetu. Na primer
 // using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person(); // adding new property to person1 person1.age = 20;

Zdaj je ta agelastnost edinstvena za person1objekt in ni na voljo za person2objekt.

Če pa je objekt ustvarjen z dobesedno literaturo in če je spremenljivka definirana s to vrednostjo predmeta, bodo spremembe v vrednosti spremenljivke spremenile prvotni objekt. Na primer

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

Ko je objekt ustvarjen s predmetno dobesedno, bo katera koli spremenljivka predmeta, ki izhaja iz tega predmeta, delovala kot klon prvotnega predmeta. Zato se bo vsaka sprememba, ki jo naredite v enem predmetu, odrazila tudi v drugem predmetu.

Dodajanje lastnosti in metod v predmet

V objekt, kot je ta, lahko dodate lastnosti ali metode:

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

Izhod

 pozdravljeni Uncaught TypeError: person2.greet ni funkcija

V zgornjem primeru sta predmetu dodana nova lastnost genderin nova metoda .greet()person1

Vendar je ta nova lastnost in metoda dodana le person1. Ne, ne morejo dostopati do genderali greet()iz person2. Zato program sproži napako, ko poskušamo dostopatiperson2.greet();

Prototip predmeta JavaScript

Funkciji konstruktorja lahko s prototipom dodate tudi lastnosti in metode . Na primer

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

Če želite izvedeti več o prototipih, obiščite JavaScript Prototype.

Vgrajeni konstruktorji JavaScript

JavaScript ima tudi vgrajene konstruktorje. Nekateri med njimi so:

 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

V JavaScript lahko nize kot predmete ustvarite tako:

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

V JavaScript lahko številke ustvarijo kot predmete:

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

V JavaScript lahko logične vrednosti ustvarijo kot predmete tako:

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

Opomba : Priporočljivo je, da uporabite primitivne vrste podatkov in jih ustvarite na običajen način, na primer const name = 'John';, const number = 57;inconst count = true;

Nizov, številk in logičnih vrednosti ne smete prijaviti kot predmete, ker upočasnjujejo program.

Opomba : V JavaScript je bila ključna beseda classuvedena v ES6 (ES2015), ki nam omogoča tudi ustvarjanje predmetov. Razredi so podobni konstruktorskim funkcijam v JavaScript. Če želite izvedeti več, obiščite tečaje JavaScript.

Zanimive Članki...