JavaScript -funksie-aanroeping
Die kode binne 'n JavaScript function
sal uitgevoer word wanneer "iets" dit oproep.
Aanroep van 'n JavaScript-funksie
Die kode binne 'n funksie word nie uitgevoer wanneer die funksie gedefinieer is nie .
Die kode binne 'n funksie word uitgevoer wanneer die funksie opgeroep word .
Dit is algemeen om die term " roep 'n funksie " te gebruik in plaas van " roep 'n funksie op ".
Dit is ook algemeen om te sê "roep 'n funksie aan", "begin 'n funksie" of "voer 'n funksie uit".
In hierdie tutoriaal sal ons invoke gebruik , want 'n JavaScript-funksie kan opgeroep word sonder om opgeroep te word.
Aanroep van 'n funksie as 'n funksie
Voorbeeld
function myFunction(a, b) {
return a * b;
}
myFunction(10, 2); //
Will return 20
Die funksie hierbo behoort aan geen voorwerp nie. Maar in JavaScript is daar altyd 'n standaard globale voorwerp.
In HTML is die standaard globale voorwerp die HTML-bladsy self, dus die funksie hierbo "behoort" aan die HTML-bladsy.
In 'n blaaier is die bladsy-objek die blaaiervenster. Die funksie hierbo word outomaties 'n vensterfunksie.
myFunction() en window.myFunction() is dieselfde funksie:
Voorbeeld
function myFunction(a, b) {
return a * b;
}
window.myFunction(10, 2); // Will also return 20
Dit is 'n algemene manier om 'n JavaScript-funksie op te roep, maar nie 'n baie goeie praktyk nie.
Globale veranderlikes, metodes of funksies kan maklik naamkonflikte en foute in die globale voorwerp skep.
Die hierdie sleutelwoord
In JavaScript is die ding genaamd this
, die voorwerp wat die huidige kode "besit".
Die waarde van this
, wanneer dit in 'n funksie gebruik word, is die voorwerp wat die funksie "besit".
Let daarop dat this
dit nie 'n veranderlike is nie. Dit is 'n sleutelwoord. Jy kan nie die waarde van verander nie this
.
Wenk: Lees meer oor die this
sleutelwoord by JS hierdie sleutelwoord .
Die globale voorwerp
Wanneer 'n funksie sonder 'n eienaarobjek geroep word, word die waarde van this
die globale objek.
In 'n webblaaier is die globale voorwerp die blaaiervenster.
Hierdie voorbeeld gee die vensterobjek terug as die waarde van this
:
Voorbeeld
let x = myFunction();
// x will be the window object
function myFunction() {
return this;
}
Om 'n funksie as 'n globale funksie aan te roep, veroorsaak dat die waarde hiervan die globale objek is.
Deur die vensterobjek as 'n veranderlike te gebruik, kan u program maklik ineenstort.
Aanroep van 'n funksie as 'n metode
In JavaScript kan jy funksies as objekmetodes definieer.
Die volgende voorbeeld skep 'n objek ( myObject ), met twee eienskappe ( voornaam en van ), en 'n metode ( volle Naam ):
Voorbeeld
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
myObject.fullName(); // Will return "John Doe"
Die fullName -metode is 'n funksie. Die funksie behoort aan die voorwerp. myObject is die eienaar van die funksie.
Die ding wat genoem word this
, is die voorwerp wat die JavaScript-kode "besit". this
In hierdie geval is die waarde van myObject .
Toets dit! Verander die volle naam metode om die waarde van terug te gee this
:
Voorbeeld
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this;
}
}
// This will return [object Object] (the owner object)
myObject.fullName();
Deur 'n funksie as 'n objekmetode aan te roep, veroorsaak dat die waarde van this
die objek self is.
Aanroep van 'n funksie met 'n funksie-konstruktor
new
As 'n funksie-aanroeping met die sleutelwoord voorafgegaan word , is dit 'n konstruktor-aanroep.
Dit lyk of jy 'n nuwe funksie skep, maar aangesien JavaScript-funksies voorwerpe is, skep jy eintlik 'n nuwe voorwerp:
Voorbeeld
// This is a function constructor:
function myFunction(arg1, arg2) {
this.firstName = arg1;
this.lastName = arg2;
}
// This creates a new object
const myObj = new myFunction("John", "Doe");
// This will return "John"
myObj.firstName;
'n Konstruktor-aanroeping skep 'n nuwe voorwerp. Die nuwe voorwerp erf die eienskappe en metodes van sy konstruktor.
Die this
sleutelwoord in die konstruktor het nie 'n waarde nie.
Die waarde van this
sal die nuwe objek wees wat geskep word wanneer die funksie opgeroep word.