„JavaScript Constructor“ funkcija (su pavyzdžiais)

Šioje pamokoje su pavyzdžių pagalba sužinosite apie „JavaScript“ konstruktoriaus funkciją.

„JavaScript“ objektams kurti naudojama konstruktoriaus funkcija. Pavyzdžiui,

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

Ankstesniame pavyzdyje function Person()yra objekto konstruktoriaus funkcija.

Norėdami sukurti objektą iš konstruktoriaus funkcijos, mes naudojame newraktinį žodį.

Pastaba : Laikoma gera praktika, jei didžiąją raidę rašote savo konstruktoriaus funkcijoje.

Sukurkite kelis objektus naudodami konstruktoriaus funkciją

„JavaScript“ galite sukurti kelis objektus iš konstruktoriaus funkcijos. Pavyzdžiui,

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

Pirmiau pateiktoje programoje du objektai yra sukurti naudojant tą pačią konstruktoriaus funkciją.

„JavaScript“ šį raktinį žodį

„JavaScript“, kai thisraktinis žodis naudojamas konstruktoriaus funkcijoje, thisnurodo objektą, kai objektas sukuriamas. Pavyzdžiui,

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

Taigi, kai objektas pasiekia ypatybes, jis gali tiesiogiai pasiekti nuosavybę kaip person1.name.

„JavaScript“ konstruktoriaus funkcijų parametrai

Taip pat galite sukurti konstruktoriaus funkciją su parametrais. Pavyzdžiui,

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

Aukščiau pateiktame pavyzdyje kūrėjo funkcijai perdavėme argumentus kuriant objektą.

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

Tai leidžia kiekvienam objektui turėti skirtingas savybes. Kaip parodyta aukščiau,

console.log(person1.name); duoda Jonas

console.log(person2.name); duoda Semas

Kurti objektus: konstruktoriaus funkcija „Vs Object Literal“

  • Object Literal paprastai naudojamas kuriant vieną objektą. Konstruktoriaus funkcija yra naudinga, jei norite sukurti kelis objektus. Pavyzdžiui,
 // using object literal let person = ( name: 'Sam' )
 // using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person();
  • Kiekvienas objektas, sukurtas iš konstruktoriaus funkcijos, yra unikalus. Galite turėti tas pačias savybes kaip ir konstruktoriaus funkcija arba pridėti naują ypatybę prie vieno konkretaus objekto. Pavyzdžiui,
 // using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person(); // adding new property to person1 person1.age = 20;

Dabar ši ageypatybė yra unikali person1objektui ir nėra prieinama person2objektui.

Tačiau, jei objektas sukurtas su objekto pažodžiu ir jei kintamasis yra apibrėžtas su ta objekto verte, bet kokie kintamojo vertės pokyčiai pakeis pradinį objektą. Pavyzdžiui,

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

Kai objektas sukurtas su objekto pažodžiu, bet kuris iš to objekto gautas objekto kintamasis veiks kaip pirminio objekto klonas. Taigi, bet kokie vieno objekto pakeitimai atsispindės ir kitame objekte.

Ypatybių ir metodų pridėjimas objekte

Tokiame objekte galite pridėti ypatybių ar metodų:

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

Rezultatas

 sveiki, „Uncaught TypeError“: person2.greet nėra funkcija

Ankstesniame pavyzdyje prie objekto pridedama nauja ypatybė genderir naujas metodas .greet()person1

Tačiau ši nauja savybė ir metodas tik pridedami person1. Negalite pasiekti genderar greet()iš jo person2. Taigi programa bando pasiekti klaidąperson2.greet();

„JavaScript“ objekto prototipas

Taip pat galite pridėti savybes ir metodus prie konstruktoriaus funkcijos naudodami prototipą . Pavyzdžiui,

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

Norėdami sužinoti daugiau apie prototipus, apsilankykite „JavaScript Prototype“.

Integruoti „JavaScript“ konstruktoriai

„JavaScript“ taip pat turi įmontuotus konstruktorius. Kai kurie iš jų yra:

 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“ eilutes kaip objektus gali sukurti:

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

„JavaScript“ sistemoje numerius kaip objektus gali sukurti:

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

„JavaScript“ sistemoje loginius parametrus kaip objektus gali sukurti:

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

Pastaba : Rekomenduojama naudoti primityvius duomenų tipus ir kurti juos įprastu būdu, pvz. const name = 'John';, const number = 57;Irconst count = true;

Jūs neturėtumėte deklaruoti eilučių, skaičių ir loginių reikšmių kaip objektų, nes jie lėtina programą.

Pastaba : „JavaScript“ raktinis žodis classbuvo įvestas ES6 (ES2015), kuris taip pat leidžia mums kurti objektus. Klasės yra panašios į „JavaScript“ konstruktoriaus funkcijas. Norėdami sužinoti daugiau, apsilankykite „JavaScript Classes“.

Įdomios straipsniai...