Σε αυτό το σεμινάριο, θα μάθετε για τη λειτουργία κατασκευαστή JavaScript με τη βοήθεια παραδειγμάτων.
Στο JavaScript, μια συνάρτηση κατασκευαστή χρησιμοποιείται για τη δημιουργία αντικειμένων. Για παράδειγμα,
// constructor function function Person () ( this.name = 'John', this.age = 23 ) // create an object const person = new Person();
Στο παραπάνω παράδειγμα, function Person()
είναι μια συνάρτηση κατασκευαστή αντικειμένων.
Για να δημιουργήσουμε ένα αντικείμενο από μια συνάρτηση κατασκευαστή, χρησιμοποιούμε τη new
λέξη-κλειδί.
Σημείωση : Θεωρείται καλή πρακτική η χρήση κεφαλαίων στο πρώτο γράμμα της συνάρτησης κατασκευαστή.
Δημιουργία πολλαπλών αντικειμένων με συνάρτηση κατασκευαστή
Στο JavaScript, μπορείτε να δημιουργήσετε πολλά αντικείμενα από μια συνάρτηση κατασκευαστή. Για παράδειγμα,
// 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
Στο παραπάνω πρόγραμμα, δύο αντικείμενα δημιουργούνται χρησιμοποιώντας την ίδια συνάρτηση κατασκευαστή.
JavaScript αυτή η λέξη-κλειδί
Στο JavaScript, όταν η this
λέξη-κλειδί χρησιμοποιείται σε μια συνάρτηση κατασκευαστή, this
αναφέρεται στο αντικείμενο κατά τη δημιουργία του αντικειμένου. Για παράδειγμα,
// constructor function function Person () ( this.name = 'John', ) // create object const person1 = new Person(); // access properties console.log(person1.name); // John
Ως εκ τούτου, όταν ένα αντικείμενο έχει πρόσβαση στις ιδιότητες, μπορεί να έχει άμεση πρόσβαση στην ιδιότητα ως person1.name
.
Παράμετροι λειτουργίας κατασκευαστή JavaScript
Μπορείτε επίσης να δημιουργήσετε μια συνάρτηση κατασκευαστή με παραμέτρους. Για παράδειγμα,
// 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"
Στο παραπάνω παράδειγμα, έχουμε περάσει ορίσματα στη συνάρτηση του κατασκευαστή κατά τη δημιουργία του αντικειμένου.
const person1 = new Person('John', 23, 'male'); const person2 = new Person('Sam', 25, 'male');
Αυτό επιτρέπει σε κάθε αντικείμενο να έχει διαφορετικές ιδιότητες. Όπως φαίνεται παραπάνω,
console.log(person1.name);
δίνει στον Τζον
console.log(person2.name);
δίνει στον Σαμ
Δημιουργία αντικειμένων: Λειτουργία κατασκευαστή έναντι αντικειμένου κυριολεκτικά
- Το Object Literal χρησιμοποιείται γενικά για τη δημιουργία ενός αντικειμένου. Η συνάρτηση του κατασκευαστή είναι χρήσιμη αν θέλετε να δημιουργήσετε πολλά αντικείμενα. Για παράδειγμα,
// using object literal let person = ( name: 'Sam' )
// using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person();
- Κάθε αντικείμενο που δημιουργείται από τη συνάρτηση του κατασκευαστή είναι μοναδικό. Μπορείτε να έχετε τις ίδιες ιδιότητες με τη συνάρτηση του κατασκευαστή ή να προσθέσετε μια νέα ιδιότητα σε ένα συγκεκριμένο αντικείμενο. Για παράδειγμα,
// using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person(); // adding new property to person1 person1.age = 20;
Τώρα αυτή η age
ιδιότητα είναι μοναδική σε person1
αντικείμενο και δεν είναι διαθέσιμη για person2
αντιρρήσεις.
Ωστόσο, εάν ένα αντικείμενο δημιουργείται με ένα αντικείμενο κυριολεκτικά, και εάν μια μεταβλητή ορίζεται με αυτήν την τιμή αντικειμένου, τυχόν αλλαγές στη μεταβλητή τιμή θα αλλάξουν το αρχικό αντικείμενο. Για παράδειγμα,
// 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
Όταν ένα αντικείμενο δημιουργείται με ένα αντικείμενο κυριολεκτικά, οποιαδήποτε μεταβλητή αντικειμένου που προέρχεται από αυτό το αντικείμενο θα ενεργήσει ως κλώνος του αρχικού αντικειμένου. Ως εκ τούτου, οποιαδήποτε αλλαγή που κάνετε σε ένα αντικείμενο θα αντικατοπτρίζεται επίσης στο άλλο αντικείμενο.
Προσθήκη ιδιοτήτων και μεθόδων σε ένα αντικείμενο
Μπορείτε να προσθέσετε ιδιότητες ή μεθόδους σε ένα αντικείμενο όπως αυτό:
// 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();
Παραγωγή
γεια Uncaught TypeError: Το person2.greet δεν είναι συνάρτηση
Στο παραπάνω παράδειγμα, μια νέα ιδιότητα gender
και μια νέα μέθοδος greet()
προστίθενται στο person1
αντικείμενο.
Ωστόσο, αυτή η νέα ιδιότητα και μέθοδος προστίθεται μόνο στο person1
. Δεν έχετε πρόσβαση gender
ή greet()
από person2
. Ως εκ τούτου, το πρόγραμμα δίνει σφάλμα όταν προσπαθούμε να αποκτήσουμε πρόσβασηperson2.greet();
Πρωτότυπο αντικειμένου JavaScript
Μπορείτε επίσης να προσθέσετε ιδιότητες και μεθόδους σε μια συνάρτηση κατασκευαστή χρησιμοποιώντας ένα πρωτότυπο . Για παράδειγμα,
// 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
Για να μάθετε περισσότερα σχετικά με τα πρωτότυπα, επισκεφθείτε το Πρωτότυπο JavaScript.
Ενσωματωμένοι κατασκευαστές JavaScript
Το JavaScript έχει επίσης ενσωματωμένους κατασκευαστές. Κάποιοι από αυτούς είναι:
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, οι συμβολοσειρές μπορούν να δημιουργηθούν ως αντικείμενα με:
const name = new String ('John'); console.log(name); // "John"
Στο JavaScript, οι αριθμοί μπορούν να δημιουργηθούν ως αντικείμενα με:
const number = new Number (57); console.log(number); // 57
Στο JavaScript, τα booleans μπορούν να δημιουργηθούν ως αντικείμενα από:
const count = new Boolean(true); console.log(count); // true
Σημείωση : Συνιστάται η χρήση πρωτόγονων τύπων δεδομένων και η δημιουργία τους με κανονικό τρόπο, όπως const name = 'John';
, const number = 57;
καιconst count = true;
Δεν πρέπει να δηλώνετε συμβολοσειρές, αριθμούς και δυαδικές τιμές ως αντικείμενα επειδή επιβραδύνουν το πρόγραμμα.
Σημείωση : Στο JavaScript, η λέξη-κλειδί class
εισήχθη στο ES6 (ES2015) που μας επιτρέπει επίσης να δημιουργήσουμε αντικείμενα. Τα μαθήματα είναι παρόμοια με τις λειτουργίες του κατασκευαστή στο JavaScript. Για να μάθετε περισσότερα, επισκεφθείτε τα μαθήματα JavaScript.