JavaScript Funktionanrop
- Föregående sida JS-funktion parametrar
- Nästa sida JS-funktion Call
Koden inom en JavaScript-funktion körs när 'något' anropar den.
Anropa JavaScript-funktioner
När funktionen ärDefinierakommer koden inom funktionen inte att köras.
När funktionen ärAnropavid, kommer koden inom funktionen att köras.
Att anropa en funktion kan också sägas vara att 'starta en funktion' eller 'utföra en funktion'.
I denna kurs använder vi “Anropa”
Anropa funktionen som en funktion
exempel
function myFunction(a, b) { return a * b; } myFunction(10, 2); // Returnerar 20
Dessa funktioner tillhör inget objekt. Men i JavaScript finns alltid ett default globalt objekt.
I HTML är den default globala objektet själva HTML-sidan, alla funktioner ovan 'hör till' HTML-sidan.
I en webbläsare är denna sidobjektet det webbläsarfönstret. Funktionen ovan blir automatiskt en fönsterfunktion.
myFunction() och window.myFunction() är samma funktion:
exempel
function myFunction(a, b) { return a * b; } window.myFunction(10, 2); // Återger också 20
Detta är ett vanligt sätt att anropa en funktion, men det är inte en bra vana.
globala variabler, metoder eller funktioner kan lätt skapa namnkonflikter och sårbarheter i det globala objektet.
this nyckelord
i JavaScript kallas this
det är "ägande" det objekt som äger den aktuella koden.
this
värdet, när det används i en funktion, är "ägande" det objekt som äger funktionen.
Observera this
är inte en variabel. Det tillhör nyckelord. Du kan inte ändra this
värdet.
det globala objektet
När du anropar ett objekt utan ägarethis
värdet blir ett globalt objekt.
I webbläsare är det globala objektet webbläsarobjektet.
Detta exempel använder this
värdet returnerar detta window-objekt:
exempel
var x = myFunction(); // x blir window-objektet function myFunction() { return this; }
Att anropa en funktion som en global funktion leder till this
värdet blir ett globalt objekt.
Använda window-objektet som en variabel kan lätt orsaka programkrasch.
Anropa funktionen som en metod
I JavaScript kan du definiera en funktion som objektmetod.
Nedan är ett exempel som skapar ett objekt (myObject) med två egenskaper (firstName och lastName) samt en metod (fullName):
exempel
var myObject = { firstName: "Bill", lastName: "Gates", fullName: function () { return this.firstName + " " + this.lastName; } } myObject.fullName(); // Återger "Bill Gates"
fullName-metoden är en funktion. Funktionen tillhör objektet. myObject är funktionens ägare.
kallas this
det är "ägande" detta JavaScript-kodobjekt. I detta exempel,this
värdet är myObject.
Testa detta! Ändra denna fullName-metod för att returnera this
värdet:
exempel
var myObject = { firstName: "Bill", lastName: "Gates", fullName: function () { return this; } } myObject.fullName(); // Återger [object Object] (ägarens objekt)
att anropa funktionen som en objektmetod kommer att leda till this
värdet kommer att bli själva objektet.
att anropa funktionen genom funktion konstruktorn
om det finns en new
om det finns en nyckelordet, så det är ett anrop av konstruktorn.
Det ser ut som om du skapar en ny funktion, men eftersom JavaScript-funktioner är objekt, skapar du faktiskt ett nytt objekt:
exempel
// Detta är en funktion konstruktorn: function myFunction(arg1, arg2) { this.firstName = arg1; this.lastName = arg2; } // Skapar ett nytt objekt: var x = new myFunction("Bill", "Gates"); x.firstName; // kommer att returnera "Bill"
anrop av konstruktorn kommer att skapa ett nytt objekt. Det nya objektet kommer att arbeta med egenskaper och metoder från sin konstruktorn.
inuti this
nyckelordet har ingen värde.
this
värdet kommer att bli ett nytt objekt som skapas vid anrop av funktionen.
- Föregående sida JS-funktion parametrar
- Nästa sida JS-funktion Call