JavaScript konstruktora funkcija (ar piemēriem)

Šajā apmācībā jūs uzzināsit par JavaScript konstruktora funkciju, izmantojot piemērus.

JavaScript, lai izveidotu objektus, tiek izmantota konstruktora funkcija. Piemēram,

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

Iepriekš minētajā piemērā function Person()ir objekta konstruktora funkcija.

Lai izveidotu objektu no konstruktora funkcijas, mēs izmantojam newatslēgvārdu.

Piezīme . Tiek uzskatīts par labu praksi lielo burtu izmantot konstruktora funkcijai.

Izveidojiet vairākus objektus ar konstruktora funkciju

JavaScript programmā jūs varat izveidot vairākus objektus no konstruktora funkcijas. Piemēram,

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

Iepriekš minētajā programmā divi objekti tiek izveidoti, izmantojot to pašu konstruktora funkciju.

JavaScript šo atslēgvārdu

Ja thisatslēgvārds konstruktora funkcijā tiek izmantots JavaScript, tas thisattiecas uz objektu, kad objekts tiek izveidots. Piemēram,

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

Tādējādi, kad objekts piekļūst rekvizītiem, tas var tieši piekļūt īpašumam kā person1.name.

JavaScript konstruktora funkciju parametri

Varat arī izveidot konstruktora funkciju ar parametriem. Piemēram,

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

Iepriekš minētajā piemērā objekta izveides laikā esam nodevuši argumentus konstruktora funkcijai.

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

Tas ļauj katram objektam būt atšķirīgām īpašībām. Kā parādīts iepriekš,

console.log(person1.name); dod Džons

console.log(person2.name); dod Sems

Izveidot objektus: Konstruktora funkcija Vs Objekta literāls

  • Object Literal parasti izmanto, lai izveidotu vienu objektu. Konstruktora funkcija ir noderīga, ja vēlaties izveidot vairākus objektus. Piemēram,
 // using object literal let person = ( name: 'Sam' )
 // using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person();
  • Katrs objekts, kas izveidots, izmantojot konstruktora funkciju, ir unikāls. Jums var būt tādas pašas īpašības kā konstruktora funkcijai vai pievienot jaunu rekvizītu vienam konkrētam objektam. Piemēram,
 // using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person(); // adding new property to person1 person1.age = 20;

Tagad šis ageīpašums ir unikāls person1objektam un nav pieejams person2objektam.

Tomēr, ja objekts tiek izveidots ar objekta literālu un ja mainīgais ir definēts ar šo objekta vērtību, jebkuras mainīgā vērtības izmaiņas mainīs sākotnējo objektu. Piemēram,

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

Kad objekts tiek izveidots ar objekta literālu, jebkurš objekta mainīgais, kas iegūts no šī objekta, darbosies kā sākotnējā objekta klons. Tādējādi jebkuras izmaiņas, ko veicat vienā objektā, atspoguļosies arī citā objektā.

Rekvizītu un metožu pievienošana objektam

Šādam objektam varat pievienot rekvizītus vai metodes:

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

Rezultāts

 sveiki, Uncaught TypeError: person2.greet nav funkcija

Iepriekš minētajā piemērā objektam tiek pievienots jauns rekvizīts genderun jauna metode .greet()person1

Tomēr šis jaunais īpašums un metode tiek pievienota tikai person1. Jūs nevarat piekļūt gendervai greet()no tā person2. Tādējādi programma dod kļūdu, kad mēs mēģinām piekļūtperson2.greet();

JavaScript objekta prototips

Izmantojot prototipu, konstruktora funkcijai varat pievienot arī īpašības un metodes . Piemēram,

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

Lai uzzinātu vairāk par prototipiem, apmeklējiet JavaScript prototipu.

JavaScript iebūvētie konstruktori

JavaScript ir arī iebūvēti konstruktori. Daži no tiem ir:

 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 virknes kā objektus var izveidot:

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

JavaScript numurus kā objektus var izveidot:

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

JavaScript booleans kā objektus var izveidot:

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

Piezīme . Ieteicams izmantot primitīvus datu tipus un izveidot tos parastā veidā, piemēram const name = 'John';, const number = 57;unconst count = true;

Jums nevajadzētu deklarēt virknes, skaitļus un būla vērtības kā objektus, jo tie palēnina programmu.

Piezīme : JavaScript valodā atslēgvārds classtika ieviests ES6 (ES2015), kas arī ļauj mums izveidot objektus. Klases ir līdzīgas konstruktora funkcijām JavaScript. Lai uzzinātu vairāk, apmeklējiet JavaScript klases.

Interesanti raksti...