JavaScript Function Call

Koden inden for en JavaScript funktion vil blive udført, når 'noget' kalder den.

Kald JavaScript funktion

Når funktionen bliverDefinerefunktionens interne kode vil ikke blive udført.

Når funktionen bliverKaldnår, funktionens interne kode vil blive udført.

Kald af funktion kan også siges at være 'start funktion' eller 'udføre funktion'.

I denne trin-for-trin guide bruger vi “Kald”。

Kald funktion som en funktion

eksempel

function myFunction(a, b) {
    return a * b;
}
myFunction(10, 2);           // vil returnere 20

Prøv det selv

Disse funktioner tilhører ingen objekt. Men i JavaScript findes der altid en standard global objekt.

I HTML er den standard globale objekt er HTML siden selv, alle ovenstående funktioner 'tilhører' HTML siden.

I browseret, denne sideobjekt er browser vinduet. Funktionen automatisk bliver en vinduesfunktion.

myFunction() og window.myFunction() er den samme funktion:

eksempel

function myFunction(a, b) {
    return a * b;
}
window.myFunction(10, 2);    // Vil også returnere 20

Prøv det selv

Dette er en almindelig måde at kalde en funktion på, men det er ikke en god vane.

globale variabler, metoder eller funktioner kan nemt forårsage navnekollisioner og sårbarheder i det globale objekt.

this nøgleord

i JavaScript kaldes this noget, der er "at have" det objekt, der ejer det aktuelle kodeobjekt.

this værdien, når den bruges i en funktion, er "at have" det objekt, der ejer funktionen.

Bemærk this er ikke en variabel. Det er en nøgleord. Du kan ikke ændre this værdien.

det globale objekt

når man kalder et objekt uden ejerobjektthis værdien bliver en global objekt.

I en webbrowser er det globale objekt netop browserobjektet.

Dette eksempel bruger this værdien returnerer dette window-objekt:

eksempel

var x = myFunction();            // x vil blive window-objektet
function myFunction() {
   return this;
}

Prøv det selv

at kalde en funktion som en global funktion, vil føre til this værdien bliver en global objekt.

brug window-objektet som en variabel kan nemt få programmet til at krasje.

kald funktionen som en metode

I JavaScript kan du definere en funktion som en objektmetode.

Følgende eksempel opretter et objekt (myObject), med to egenskaber (firstName og lastName), samt en metode (fullName):

eksempel

var myObject = {
    firstName: "Bill",
    lastName: "Gates",
    fullName: function () {
        return this.firstName + " " + this.lastName;
    }
}
myObject.fullName();         // Vil returnere "Bill Gates"

Prøv det selv

fullName-metoden er en funktion. Funktionen tilhører objektet. myObject er funktionens ejer.

betyder this noget, der er "at have" dette JavaScript-kodeobjekt. I dette eksempel,this værdien er myObject.

test dette! Ret denne fullName-metode til at returnere this værdien:

eksempel

var myObject = {
    firstName: "Bill",
    lastName: "Gates",
    fullName: function () {
        return this;
    }
}
myObject.fullName();          // Vil returnere [object Object] (ejerobjektet)

Prøv det selv

at kalde funktionen som en objektmetode, vil føre til this værdien bliver selve objektet.

ved at kalde funktionen gennem funktionens konstruktør

hvis funktion kaldet er new hvis der er en nøgleord før funktion kaldet

Det ser ud til, at du opretter en ny funktion, men da JavaScript-funktioner er objekter, opretter du faktisk et nyt objekt:

eksempel

// Dette er funktionens konstruktør:
function myFunction(arg1, arg2) {
    this.firstName = arg1;
    this.lastName = arg2;
}
// Opretter et nyt objekt:
var x = new myFunction("Bill", "Gates");
x.firstName;                             // vil returnere "Bill"

Prøv det selv

konstruktørkaldet opretter et nyt objekt. Nyt objekt arver egenskaber og metoder fra sin konstruktør.

i konstruktøren this nøglen har ingen værdi.

this værdien vil blive til et nyt objekt, der oprettes ved kald af funktionen.