Κλήση Συνάρτησης JavaScript

Ο κώδικας μέσα στη συνάρτηση JavaScript θα εκτελεστεί όταν κάτι το καλώσει.

Κλήση JavaScript συνάρτησης

Όταν η συνάρτηση είναιΟρισμόςΗ συνάρτηση δεν θα εκτελέσει το κώδικα μέσα της.

Όταν η συνάρτηση είναιΚλήσηΌταν, το κώδικα μέσα στη συνάρτηση θα εκτελεστεί.

Η κλήση συνάρτησης μπορεί επίσης να λεγεί “εκκίνηση συνάρτησης” ή “εκτέλεση συνάρτησης”.

Σε αυτό το σεμινάριο, χρησιμοποιούμε το “Κλήση”。

Κλήση συνάρτησης ως συνάρτηση

Επίδειξη

function myFunction(a, b) {
    return a * b;
}
myFunction(10, 2);           // Θα επιστρέψει 20

Δοκιμάστε το προσωπικά

Οι παραπάνω συνάρτησεις δεν ανήκουν σε κανένα αντικείμενο. Ωστόσο, στο JavaScript υπάρχει πάντα ένας προεπιλεγμένος παγκόσμιος αντικειμενικός.

Στο HTML, η προεπιλεγμένη παγκόσμια αντικειμενική είναι η ίδια η σελίδα HTML, όλες οι συνάρτησεις πάνω ανήκουν στην σελίδα HTML.

Στο πρόγραμμα περιήγησης, το αντικείμενο αυτής της σελίδας είναι το παράθυρο του προγράμματος περιήγησης. Η συνάρτηση πάνω γίνεται αυτόματα μια συνάρτηση παραθύρου.

myFunction() και window.myFunction() είναι η ίδια συνάρτηση:

Επίδειξη

function myFunction(a, b) {
    return a * b;
}
window.myFunction(10, 2);    // Επιστρέφει επίσης 20

Δοκιμάστε το προσωπικά

Αυτό είναι ένα συχνό τρόπος κλήσης συνάρτησης, αλλά δεν είναι καλή συνήθεια.

global μεταβλητές, μεθόδους ή συναρτήσεις είναι εύκολα να προκαλέσουν συγκρούσεις ονομάτων και κενά στο global αντικείμενο.

this κλειδική λέξη

στο JavaScript, καλείται this το αντικείμενο που "έχει" το κείμενο, σημαίνει το αντικείμενο που "έχει" το τρέχον κείμενο.

this η τιμή, όταν χρησιμοποιείται σε συνάρτηση, είναι το αντικείμενο που "έχει" τη συνάρτηση.

Παρακαλώ σημειώστε this Δεν είναι μεταβλητή. Ανήκει στην κλειδική λέξη. Δεν μπορείτε να την αλλάξετε this η τιμή.

το global αντικείμενο

Όταν καλείτε ένα αντικείμενο χωρίς ιδιοκτήτη αντικειμένουthis η τιμή γίνεται το全局 αντικείμενο.

Στο web browser, το global αντικείμενο είναι το browser αντικείμενο.

Αυτό το παράδειγμα χρησιμοποιεί this η τιμή επιστρέφει αυτό το window αντικείμενο:

Επίδειξη

var x = myFunction();            // x θα γίνει το window αντικείμενο
function myFunction() {
   return this;
}

Δοκιμάστε το προσωπικά

Η κλήση μιας συνάρτησης ως global συνάρτηση προκαλεί this η τιμή γίνεται το全局 αντικείμενο.

Η χρήση του window αντικειμένου ως μεταβλητής μπορεί εύκολα να προκαλέσει κατέρρευση του προγράμματος.

Κλήση συνάρτησης ως μέθοδος

Στο JavaScript, μπορείτε να ορίσετε μια συνάρτηση ως μέθοδο αντικειμένου.

Ο παρακάτω παράδειγμα δημιουργεί ένα αντικείμενο (myObject), με δύο ιδιότητες (firstName και lastName), και μια μέθοδο (fullName):

Επίδειξη

var myObject = {
    firstName: "Bill",
    lastName: "Gates",
    fullName: function () {
        return this.firstName + " " + this.lastName;
    }
}
myObject.fullName();         // Επιστρέφει "Bill Gates"

Δοκιμάστε το προσωπικά

η μέθοδος fullName είναι μια συνάρτηση. Η συνάρτηση ανήκει στο αντικείμενο. Το myObject είναι ο ιδιοκτήτης της συνάρτησης.

καλείται this το αντικείμενο που "έχει" αυτό το κείμενο JavaScript, είναι το αντικείμενο που "έχει".this η τιμή είναι το myObject.

Δοκιμάστε το! Αλλάξτε τη μέθοδο fullName για να επιστρέψετε this η τιμή:

Επίδειξη

var myObject = {
    firstName: "Bill",
    lastName: "Gates",
    fullName: function () {
        return this;
    }
}
myObject.fullName();          // Επιστρέφει [object Object] (το αντικείμενο του ιδιοκτήτη)

Δοκιμάστε το προσωπικά

Η κλήση της συνάρτησης ως μεθόδου αντικειμένου θα προκαλέσει this Η τιμή γίνεται το αντικείμενο του ίδιου.

Κλήση της συνάρτησης μέσω κατασκευαστή συνάρτησης

Αν το κλειδί της κλήσης της συνάρτησης είναι new Αν το κλειδί είναι

Φαίνεται ότι δημιουργείτε μια νέα συνάρτηση, αλλά επειδή οι συνάρτησεις JavaScript είναι αντικείμενα, στην πραγματικότητα δημιουργείτε ένα νέο αντικείμενο:

Επίδειξη

// Αυτό είναι ο κατασκευαστής της συνάρτησης:
function myFunction(arg1, arg2) {
    this.firstName = arg1;
    this.lastName = arg2;
}
// Δημιουργήθηκε ένα νέο αντικείμενο:
var x = new myFunction("Bill", "Gates");
x.firstName;                             // θα επιστρέψει "Bill"

Δοκιμάστε το προσωπικά

Η κλήση κατασκευαστή θα δημιουργήσει νέο αντικείμενο. Το νέο αντικείμενο θα κληρονομήσει ιδιότητες και μεθόδους από τον κατασκευαστή του.

Στο εσωτερικό του κατασκευαστή this Το κλειδί δεν έχει τιμή.

this Η τιμή θα γίνει νέο αντικείμενο που δημιουργείται κατά την κλήση της συνάρτησης.