In de meeste object-georiënteerde programmeertalen heeft het sleutelwoord 'dit' een speciale betekenis. Meestal verwijst het naar het object dat de uitvoeringscontext is (d.w.z. naar de huidige instantie van het object). We gebruiken dit bijvoorbeeld wanneer we van binnenuit naar een objecteigenschap verwijzen: we typen this.propertyName, en dan is de context het object en verwijst this ernaar.
"ditin JavaScript
In JavaScript het is ingewikkelder omdat waar deze verwijst, hangt niet alleen af van hoe de functie is gedefinieerd, maar ook van de vorm waarin deze wordt aangeroepen.
Kijk eens hoe deze werkt afhankelijk van de plaats en vorm van aanroeping.
Wereldwijde context
Gebruikt in een globale context gebonden aan het globale object, zoals raam in een webbrowser.
dit; // venster
Binnen objectmethode
Wordt gebruikt binnen een objectmethode die gebonden is aan het dichtstbijzijnde omsluitende object. Het object is de nieuwe context van de deze sleutelwoord. Merk op dat u functie () naar ES6 syntaxis leuk: () => this.context omdat het de context zal veranderen.
Gebruikt binnen een functie die geen context heeft (geen object als ouder heeft) gebonden aan de globale context, zelfs als de functie is gedefinieerd binnen het object.
Merk op dat we var context in plaats van let/const context omdat laat en const de context van de variabele wijzigen. var is altijd het dichtst bij de globale uitvoeringscontext. laat en const declareer variabelen alleen in een lokaal blokbereik.
oproep() en toepassen() zijn JavaScript functies. Hiermee kan een object methoden van een ander object gebruiken. oproep() neemt argumenten afzonderlijk waar toepassen() neemt ze als een array.
deze is hier gebonden aan nieuwe context veranderd in oproep() en toepassen() methoden.
Gebruikt in elke event handler (bijvoorbeeld, addeventListener, onclick, attachEvent), is het gebonden aan het DOM-element waaraan de gebeurtenis was gekoppeld.
document.querySelector(".foo").addEventListener("click", function() {
this; // verwijst naar het `foo` div element
});
ES6 pijl functie
Gebruikt binnen de pijlfunctie is het altijd gebonden aan de lexicale scope. In de pijlfunctie kun je de deze op welke manier dan ook.