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 new
ključ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 this
ključna beseda uporablja v konstruktorski funkciji, se this
nanaš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 age
lastnost edinstvena za person1
objekt in ni na voljo za person2
objekt.
Č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 gender
in nova metoda .greet()
person1
Vendar je ta nova lastnost in metoda dodana le person1
. Ne, ne morejo dostopati do gender
ali 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 class
uvedena 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.