În acest tutorial, veți afla despre funcția de constructor JavaScript cu ajutorul exemplelor.
În JavaScript, o funcție constructor este utilizată pentru a crea obiecte. De exemplu,
// constructor function function Person () ( this.name = 'John', this.age = 23 ) // create an object const person = new Person();
În exemplul de mai sus, function Person()
este o funcție constructor de obiecte.
Pentru a crea un obiect dintr-o funcție constructor, folosim new
cuvântul cheie.
Notă : Se consideră o bună practică să scrii cu majusculă prima literă a funcției de constructor.
Creați mai multe obiecte cu funcția Constructor
În JavaScript, puteți crea mai multe obiecte dintr-o funcție de constructor. De exemplu,
// 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
În programul de mai sus, două obiecte sunt create folosind aceeași funcție de constructor.
JavaScript acest cuvânt cheie
În JavaScript, când this
cuvântul cheie este utilizat într-o funcție de constructor, this
se referă la obiect atunci când obiectul este creat. De exemplu,
// constructor function function Person () ( this.name = 'John', ) // create object const person1 = new Person(); // access properties console.log(person1.name); // John
Prin urmare, atunci când un obiect accesează proprietățile, se poate accesa direct proprietatea ca person1.name
.
Parametrii funcției constructorului JavaScript
De asemenea, puteți crea o funcție constructor cu parametri. De exemplu,
// 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"
În exemplul de mai sus, am transmis argumente funcției constructor în timpul creării obiectului.
const person1 = new Person('John', 23, 'male'); const person2 = new Person('Sam', 25, 'male');
Aceasta permite fiecărui obiect să aibă proprietăți diferite. După cum se arată mai sus,
console.log(person1.name);
dă John
console.log(person2.name);
dă Sam
Creați obiecte: Funcția constructor împotriva obiectului Literal
- Obiectul Literal este utilizat în general pentru a crea un singur obiect. Funcția constructor este utilă dacă doriți să creați mai multe obiecte. De exemplu,
// using object literal let person = ( name: 'Sam' )
// using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person();
- Fiecare obiect creat din funcția constructor este unic. Puteți avea aceleași proprietăți ca funcția constructor sau puteți adăuga o proprietate nouă unui anumit obiect. De exemplu,
// using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person(); // adding new property to person1 person1.age = 20;
Acum această age
proprietate este unică person1
obiectului și nu este disponibilă person2
obiectului.
Cu toate acestea, dacă un obiect este creat cu un obiect literal și dacă o variabilă este definită cu valoarea obiectului respectiv, orice modificare a valorii variabilei va schimba obiectul original. De exemplu,
// 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
Când un obiect este creat cu un obiect literal, orice variabilă de obiect derivată din acel obiect va acționa ca o clonă a obiectului original. Prin urmare, orice modificare pe care o faceți într-un obiect se va reflecta și în celălalt obiect.
Adăugarea de proprietăți și metode într-un obiect
Puteți adăuga proprietăți sau metode într-un obiect ca acesta:
// 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();
Ieșire
salut Uncaught TypeError: person2.greet nu este o funcție
În exemplul de mai sus, o nouă proprietate gender
și o nouă metodă greet()
sunt adăugate person1
obiectului.
Cu toate acestea, această nouă proprietate și metodă este adăugată numai la person1
. Nu puteți accesa gender
sau de greet()
la person2
. Prin urmare, programul dă erori atunci când încercăm să accesămperson2.greet();
Prototipul obiectului JavaScript
De asemenea, puteți adăuga proprietăți și metode unei funcții de constructor folosind un prototip . De exemplu,
// 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
Pentru a afla mai multe despre prototipuri, accesați JavaScript Prototype.
Constructori încorporați JavaScript
JavaScript are, de asemenea, constructori încorporați. Unii dintre ei sunt:
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
În JavaScript, șirurile pot fi create ca obiecte prin:
const name = new String ('John'); console.log(name); // "John"
În JavaScript, numerele pot fi create ca obiecte prin:
const number = new Number (57); console.log(number); // 57
În JavaScript, booleenii pot fi creați ca obiecte prin:
const count = new Boolean(true); console.log(count); // true
Notă : Se recomandă utilizarea tipurilor de date primitive și crearea lor într-un mod normal, cum ar fi const name = 'John';
, const number = 57;
șiconst count = true;
Nu trebuie să declarați șiruri, numere și valori booleene ca obiecte, deoarece acestea încetinesc programul.
Notă : În JavaScript, cuvântul cheie a class
fost introdus în ES6 (ES2015), care ne permite, de asemenea, să creăm obiecte. Clasele sunt similare cu funcțiile constructor din JavaScript. Pentru a afla mai multe, vizitați cursurile JavaScript.