JavaScripti konstruktori funktsioon (koos näidetega)

Selles õpetuses saate näidete abil õppida JavaScripti konstruktori funktsiooni.

JavaScriptis kasutatakse objektide loomiseks konstruktori funktsiooni. Näiteks,

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

Ülaltoodud näites function Person()on objekti konstruktori funktsioon.

Konstruktori funktsioonist objekti loomiseks kasutame newmärksõna.

Märkus . Heaks tavaks peetakse oma konstruktori funktsiooni esimese tähe suurtähtede kasutamist.

Konstruktori funktsiooniga mitme objekti loomine

JavaScripti abil saate konstruktori funktsioonist luua mitu objekti. Näiteks,

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

Ülalolevas programmis luuakse kaks konstruktori funktsiooni kasutades kaks objekti.

JavaScripti see märksõna

Kui thiskonstruktori funktsioonis kasutatakse märksõna, thisviitab JavaScripti objektile objekti loomisel. Näiteks,

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

Seega, kui objektile on juurdepääs atribuutidele, saab ta sellele atribuudile otse juurde ka kui person1.name.

JavaScripti konstruktori funktsioonide parameetrid

Samuti saate luua parameetritega konstruktori funktsiooni. Näiteks,

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

Ülaltoodud näites oleme objekti loomisel edastanud konstruktori funktsioonile argumendid.

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

See võimaldab igal objektil olla erinevad omadused. Nagu eespool näidatud,

console.log(person1.name); annab John

console.log(person2.name); annab Sam

Objektide loomine: Konstruktori funktsioon Vs Object Literal

  • Object Literal kasutatakse tavaliselt ühe objekti loomiseks. Konstruktori funktsioon on kasulik, kui soovite luua mitu objekti. Näiteks,
 // using object literal let person = ( name: 'Sam' )
 // using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person();
  • Iga konstruktori funktsioonist loodud objekt on ainulaadne. Teil võivad olla samad omadused nagu konstruktori funktsioonil või lisada ühele konkreetsele objektile uus omadus. Näiteks,
 // using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person(); // adding new property to person1 person1.age = 20;

Nüüd on see ageomadus person1objektil ainulaadne ja pole person2objektide jaoks saadaval .

Kui aga objekt luuakse objekti liitriga ja kui selle objekti väärtusega on määratletud muutuja, muudavad muutuja väärtuse muutused algset objekti. Näiteks,

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

Kui objekt luuakse objektiliitlasega, toimib mis tahes sellest objektist tuletatud objekti muutuja algse objekti kloonina. Seega kajastuvad kõik teie tehtud muudatused ühes objektis ka teises objektis.

Atribuutide ja meetodite lisamine objektile

Sellisele objektile saate lisada atribuute või meetodeid:

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

Väljund

 tere Uncaught TypeError: person2.greet ei ole funktsioon

Ülaltoodud näites lisatakse objektile uus atribuut genderja uus meetod .greet()person1

Kuid see uus omadus ja meetod lisatakse ainult person1. Te ei pääse juurde genderega greet()sealt person2. Seega annab programm vea, kui proovime juurde pääsedaperson2.greet();

JavaScripti objekti prototüüp

Prototüübi abil saate konstruktori funktsioonile lisada ka omadusi ja meetodeid . Näiteks,

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

Prototüüpide kohta lisateabe saamiseks külastage JavaScripti prototüüpi.

JavaScripti sisseehitatud konstruktorid

JavaScriptil on ka sisseehitatud konstruktorid. Mõned neist on:

 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

JavaScripti abil saab stringe objektidena luua järgmiselt:

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

JavaScriptis saab numbreid objektidena luua järgmiselt:

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

JavaScripti booleansi saab objektidena luua järgmiselt:

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

Märkus : Soovitatav on kasutada primitiivne tüüpi andmeid ja luua need tavapärasel viisil, nagu const name = 'John';, const number = 57;jaconst count = true;

Te ei tohiks deklareerida stringe, numbreid ja boolean väärtusi objektidena, kuna need aeglustavad programmi.

Märkus : JavaScripti classkasutusele võeti märksõna ES6-s (ES2015), mis võimaldab meil ka objekte luua. Klassid sarnanevad JavaScripti konstruktori funktsioonidega. Lisateabe saamiseks külastage JavaScripti kursusi.

Huvitavad Artiklid...