Τι είναι το this στη JavaScript;
sobes.tech AI
Απάντηση από AI
Το this στην JavaScript είναι μια λέξη-κλειδί που δείχνει το πλαίσιο εκτέλεσης μιας συνάρτησης. Η τιμή του καθορίζεται ανάλογα με τον τρόπο που καλείται η συνάρτηση.
Κανονικά, το this αναφέρεται στο παγκόσμιο αντικείμενο (στον browser, window) σε μια απλή κλήση συνάρτησης, εκτός αν βρίσκεται σε αυστηρή λειτουργία.
Σε αυστηρή λειτουργία ('use strict'), στο ίδιο σενάριο, το this θα είναι undefined.
Όταν καλείται μια μέθοδος ενός αντικειμένου, το this αναφέρεται στο ίδιο το αντικείμενο.
const obj = {
method: function() {
console.log(this); // obj
}
};
obj.method();
Όταν χρησιμοποιείται ένας κατασκευαστής (new με μια συνάρτηση), το this δείχνει στη νέα δημιουργημένη παρουσία.
function Constructor() {
console.log(this); // παρουσία του Constructor
}
const instance = new Constructor();
Όταν χρησιμοποιούνται μέθοδοι όπως call, apply, bind, το this ορίζεται ρητά ως το πρώτο όρισμα.
function greet() {
console.log(`Γειά σου, ${this.name}!`);
}
const person = { name: 'Alicia' };
greet.call(person); // Γειά σου, Alicia!
greet.apply(person); // Γειά σου, Alicia!
const boundGreet = greet.bind(person);
boundGreet(); // Γειά σου, Alicia!
Σε συναρτήσεις βέλους (Arrow Functions), το this δεν έχει δικό του πλαίσιο. κληρονομείται λεξικογραφικά από το περιβάλλον όπου ορίστηκε.
const obj2 = {
name: 'Bob',
greet: function() {
const arrowGreet = () => {
console.log(`Γειά σου από ${this.name}!`); // this αναφέρεται στο obj2
};
arrowGreet();
}
};
obj2.greet(); // Γειά σου από Bob!
const obj3 = {
name: 'Charlie',
greet: () => {
console.log(`Γειά σου από ${this.name}!`); // this αναφέρεται σε window (ή undefined σε αυστηρή λειτουργία), όχι στο obj3
}
};
obj3.greet(); // Γειά σου από undefined! (ή σφάλμα)
Το πλαίσιο this μπορεί να μην είναι προφανές, ειδικά κατά τη μεταβίβαση callbacks ή σε ασύγχρονες λειτουργίες. Η κατανόηση των κανόνων του this είναι κρίσιμη για τη σωστή λειτουργία της JavaScript.