JavaScript-funktion-kutsu

JavaScript-funktion sisällä oleva koodi suoritetaan, kun “jotakin” kutsuu sitä.

Kutsu JavaScript-funktiota

Kun funktio onMäärittelyKun, funktion sisällä oleva koodi ei suoriteta.

Kun funktio onKutsuKun, funktion sisällä oleva koodi suoritetaan.

Funktion kutsumista voidaan myös sanoa “käynnistää funktio” tai “suorittaa funktio”.

Tässä kurssissa käytämme “Kutsu”。

Funktion kutsuminen funktiolla

esimerkki

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

Kokeile itse

Nämä funktiot eivät kuulu mihinkään objektiin. Mutta JavaScriptissä aina on olemassa jokin oletusarvoinen globaali objekti.

HTML:ssä oletusarvoinen globaali objekti on HTML-sivu itsessään, ja kaikki yllä olevat funktiot kuuluvat HTML-sivulle.

Selaimessa tämä sivuobjekti on selaimen ikkuna. Yllä oleva funktio muuttuu automaattisesti ikkuna-funktioksi.

myFunction() ja window.myFunction() ovat samaa funktiota:

esimerkki

function myFunction(a, b) {
    return a * b;
}
window.myFunction(10, 2);    // Palauttaa myös 20

Kokeile itse

Tämä on yleinen tapa kutsua funktiota, mutta se ei ole hyvä tapa.

globaalit muuttujat, metodit tai funktiot voivat helposti aiheuttaa nimeämiskäsitteitä ja haavoittuvuuksia globaalissa objektissa。

this avainsanaksi

JavaScriptissä sitä kutsutaan this joka tarkoittaa "omistavaa" nykyistä koodia objektia。

this arvoa, kun sitä käytetään funktiossa, se on "omistava" funktion objekti。

Huomaa this Se ei ole muuttuja. Se on avainsana. Et voi muuttaa this arvo。

globaali objekti

Kun objektia kutsutaan ilman omistavaa objektiathis arvo tulee globaaliksi objektiksi。

web-selaimessa globaalit objektit ovat selaimen objekteja。

Tässä esimerkissä this arvo palauttaa tämän window-objektin:

esimerkki

var x = myFunction();            // x tulee window-objektiksi
function myFunction() {
   return this;
}

Kokeile itse

Kutsu funktiota globaalina funktiona aiheuttaa this arvo tulee globaaliksi objektiksi。

Käyttämällä window-objektia muuttujana on helppo kaataa ohjelma.

Kutsu funktiota metodina

JavaScriptissä voit määritellä funktion objektin metodiksi。

Seuraavassa esimerkissä luodaan objekti (myObject), jolla on kaksi ominaisuutta (firstName ja lastName) sekä yksi metodi (fullName):

esimerkki

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

Kokeile itse

fullName-metodi on funktio. Funktio kuuluu objektiin. myObject on funktion omistaja。

kutsutaan this joka on "omistava" tämän JavaScript-koodin objekti. Tässä esimerkissä,this arvo on myObject。

Kokeillaan! Muuta tämä fullName-metodi palauttamaan this arvo:

esimerkki

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

Kokeile itse

Funktion kutsu objektina johtaa this arvo tulee olemaan objektina.

kutsutaan funktiota funktiokonstruktorin avulla

jos funktiokutsun edessä on new avainsana, niin tämä on rakentajakutsu.

Se näyttää siltä, että luot uuden funktion, mutta koska JavaScript-funktiot ovat objekteja, luot todella uuden objektin:

esimerkki

// Tämä on funktiokonstruktori:
function myFunction(arg1, arg2) {
    this.firstName = arg1;
    this.lastName = arg2;
}
// Luodaan uusi objekti:
var x = new myFunction("Bill", "Gates");
x.firstName;                             // palauttaa "Bill"

Kokeile itse

rakentajan kutsu luo uuden objektin. Uusi objekti perii ominaisuudet ja metodit rakentajastaan.

rakentajassa this avainsana ei ole arvoa.

this arvo tulee olemaan uuden objektin luomisen aikana kutsuttaessa funktiota.