Š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 new
atslē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 this
atslēgvārds konstruktora funkcijā tiek izmantots JavaScript, tas this
attiecas 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 person1
objektam un nav pieejams person2
objektam.
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 gender
un jauna metode .greet()
person1
Tomēr šis jaunais īpašums un metode tiek pievienota tikai person1
. Jūs nevarat piekļūt gender
vai 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 class
tika 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.