Junior
Wat is het sleutelwoord 'this'?
sobes.tech AI
Antwoord van AI
this is een sleutelwoord in JavaScript dat verwijst naar het object in de context waarin de huidige code wordt uitgevoerd. De waarde wordt bepaald door de manier waarop de functie wordt aangeroepen.
De belangrijkste manieren om this te definiëren:
- Globale context: Buiten een functie verwijst
thisnaar het globale object (windowin de browser,globalin Node.js). - Normale functiebroep: In niet-strikte modus (
strict mode) verwijstthisook naar het globale object (ofundefinedals de functie wordt aangeroepen als methode van een object, maar dat object isnullofundefined). In strikte modus isthisgelijk aanundefined. - Objectmethode: Als de functie wordt aangeroepen als methode van een object (dus via de puntoperator
.), verwijstthisnaar het object dat de methode bezit. - Constructor: Bij gebruik van de
new-operator verwijstthisnaar de nieuw gemaakte instantie van het object. call(),apply(),bind()-methoden: Deze methoden stellen expliciet de waarde vanthisin bij het aanroepen van de functie.bind()retourneert een nieuwe functie metthisgebonden, terwijlcall()enapply()de functie aanroepen met de gespecificeerdethis.- Pijl functies: Pijl functies hebben geen eigen
this.thisin een pijl functie wordt lexicaal geërfd uit de omgeving waarin deze is gedefinieerd.
Voorbeelden:
// Globale context
console.log(this === window); // true (in de browser)
// Normale functiebepaling
function myFunction() {
console.log(this);
}
myFunction(); // window (in niet-strikte modus)
// Objectmethode
const myObject = {
myMethod: function() {
console.log(this);
}
};
myObject.myMethod(); // myObject
// Constructor
function MyConstructor() {
this.value = 10;
console.log(this);
}
const instance = new MyConstructor(); // instantie object
// call(), apply(), bind()
function greet(name) {
console.log("Hello, " + name + "! My name is " + this.name);
}
const person = { name: "Alice" };
greet.call(person, "Bob"); // Hello, Bob! My name is Alice
greet.apply(person, ["Bob"]); // Hello, Bob! My name is Alice
const boundGreet = greet.bind(person);
boundGreet("Bob"); // Hello, Bob! My name is Alice
// Pijl functie
const arrowFunction = () => {
console.log(this);
};
arrowFunction(); // window (als gedefinieerd in de globale context)
Het begrijpen van hoe this wordt bepaald in verschillende contexten is cruciaal voor het schrijven van correcte JavaScript-code.