Sobes.tech
Middle

Ζωντανός κώδικας: προσδιορίστε την έξοδο στην κονσόλα για τον κώδικα με συναρτήσεις, βελάκια συναρτήσεων, αντικείμενα και πλαίσιο (this), call/bind

sobes.tech AI

Απάντηση από AI

Στην JavaScript, το πλαίσιο εκτέλεσης (this) εξαρτάται από τον τρόπο με τον οποίο καλείται η συνάρτηση. Οι βελόνα (arrow) συναρτήσεις δεν έχουν δικό τους this — το κληρονομούν από το εξωτερικό λεξικό περιβάλλον.

Παράδειγμα:

const obj = {
  value: 42,
  regularFunc: function() {
    console.log(this.value);
  },
  arrowFunc: () => {
    console.log(this.value);
  }
};

obj.regularFunc(); // 42 — το this αναφέρεται στο obj
obj.arrowFunc();   // undefined ή η τιμή από το εξωτερικό πλαίσιο (π.χ. window.value)

// Χρήση call/bind:
function show() {
  console.log(this.name);
}

const user = { name: 'Alice' };

show.call(user); // Alice
const boundShow = show.bind(user);
boundShow(); // Alice

Έτσι, τα call και bind επιτρέπουν να ορίσετε ρητά το this κατά την κλήση της συνάρτησης, αλλά δεν λειτουργούν με βελόνα (arrow) συναρτήσεις, καθώς το this τους έχει οριστεί λεξικογραφικά.