Ebben az oktatóanyagban példák segítségével megismerheti a JavaScript konstruktor funkciót.
A JavaScript-ben egy konstruktor funkciót használnak objektumok létrehozására. Például,
// constructor function function Person () ( this.name = 'John', this.age = 23 ) // create an object const person = new Person();
A fenti példában function Person()
egy objektum konstruktor függvény.
Egy objektum létrehozásához egy konstruktor függvényből a new
kulcsszót használjuk .
Megjegyzés : Jó gyakorlatnak tartják, ha a konstruktor függvény első betűjét nagybetűvel írják.
Hozzon létre több objektumot a Konstruktor funkcióval
A JavaScript-ben több objektumot is létrehozhat egy konstruktor függvényből. Például,
// 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
A fenti programban két objektum jön létre ugyanazzal a konstruktor funkcióval.
JavaScript ezt a kulcsszót
A JavaScript-ben, amikor a this
kulcsot egy konstruktor függvényben használják, this
az objektumra utal az objektum létrehozásakor. Például,
// constructor function function Person () ( this.name = 'John', ) // create object const person1 = new Person(); // access properties console.log(person1.name); // John
Ennélfogva, amikor egy objektum hozzáfér a tulajdonságokhoz, akkor közvetlenül is hozzáférhet a tulajdonsághoz person1.name
.
JavaScript konstruktor funkcióparaméterek
Létrehozhat egy konstruktor függvényt is paraméterekkel. Például,
// 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"
A fenti példában argumentumokat adtunk át a konstruktor függvénynek az objektum létrehozása során.
const person1 = new Person('John', 23, 'male'); const person2 = new Person('Sam', 25, 'male');
Ez lehetővé teszi, hogy minden objektum különböző tulajdonságokkal rendelkezzen. Amint fentebb látható,
console.log(person1.name);
adja John
console.log(person2.name);
adja Sam
Objektumok létrehozása: Konstruktor függvény Vs Object Literal
- Az Object Literal általában egyetlen objektum létrehozására szolgál. A konstruktor funkció akkor hasznos, ha több objektumot akar létrehozni. Például,
// using object literal let person = ( name: 'Sam' )
// using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person();
- A konstruktor függvényből létrehozott minden objektum egyedi. Megadhatja ugyanazokat a tulajdonságokat, mint a konstruktor függvény, vagy új tulajdonságot adhat hozzá egy adott objektumhoz. Például,
// using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person(); // adding new property to person1 person1.age = 20;
Most ez a age
tulajdonság egyedi az person1
objektumon, és nem áll rendelkezésre az person2
objektum számára.
Ha azonban egy objektumot egy objektum literál segítségével hozunk létre, és ha egy változót definiálunk azzal az objektum értékkel, akkor a változó értékének bármilyen változása megváltoztatja az eredeti objektumot. Például,
// 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
Ha egy objektumot egy objektum literál készít, akkor az abból származó bármely objektumváltozó az eredeti objektum klónjaként fog működni. Ezért az egyik objektumban végrehajtott bármilyen változás a másik objektumban is tükröződik.
Tulajdonságok és módszerek hozzáadása egy objektumhoz
Tulajdonságokat vagy módszereket adhat hozzá egy ilyen objektumhoz:
// 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();
Kimenet
hello Uncaught TypeError: a person2.greet nem függvény
A fenti példában egy új tulajdonság gender
és egy új módszer greet()
kerül az person1
objektumhoz.
Ez az új tulajdonság és módszer azonban csak hozzáadódik person1
. Nem férhet hozzá, gender
és nem greet()
onnan person2
. Ezért a program hibát ad, amikor megpróbálunk hozzáférniperson2.greet();
JavaScript objektum prototípus
A prototípus segítségével tulajdonságokat és módszereket is hozzáadhat a konstruktor funkcióhoz . Például,
// 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
Ha többet szeretne megtudni a prototípusokról, látogasson el a JavaScript Prototype oldalra.
JavaScript beépített konstruktorok
A JavaScript beépített konstruktorokkal is rendelkezik. Néhány közülük:
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
A JavaScript-ben a karakterláncok objektumként hozhatók létre:
const name = new String ('John'); console.log(name); // "John"
A JavaScript-ben a számok objektumként hozhatók létre:
const number = new Number (57); console.log(number); // 57
A JavaScriptben logikai elemeket objektumként hozhat létre:
const count = new Boolean(true); console.log(count); // true
Megjegyzés : Javasoljuk, hogy használja primitív adattípusok és hozza létre azokat a szokásos módon, például const name = 'John';
, const number = 57;
ésconst count = true;
A karakterláncokat, számokat és logikai értékeket nem szabad objektumként deklarálni, mert ezek lelassítják a programot.
Megjegyzés : A JavaScript- class
ben az ES6-ban (ES2015) vezették be a kulcsszót , amely objektumok létrehozását is lehetővé teszi számunkra. Az osztályok hasonlóak a JavaScript konstruktor funkcióihoz. További információkért látogasson el a JavaScript osztályok oldalra.