Sobes.tech
Middle

Μίλησέ μου για τους τρόπους διατήρησης του πλαισίου στο JavaScript: bind, call, apply. Πώς διαφέρουν;

sobes.tech AI

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

Στην JavaScript, οι συναρτήσεις είναι αντικείμενα πρώτης τάξης και έχουν δυναμικό πλαίσιο κλήσης (this). Οι μέθοδοι bind, call και apply επιτρέπουν τον έλεγχο αυτού του πλαισίου:

  • call — καλεί άμεσα τη συνάρτηση, περνώντας το πλαίσιο και τα επιχειρήματα ξεχωριστά.

    func.call(context, arg1, arg2);
    
  • apply — παρόμοιο με το call, αλλά τα επιχειρήματα περνιούνται ως πίνακας.

    func.apply(context, [arg1, arg2]);
    
  • bind — δεν καλεί άμεσα τη συνάρτηση, αλλά επιστρέφει μια νέα συνάρτηση με δεμένο το πλαίσιο και, προαιρετικά, με μερικά εφαρμοσμένα επιχειρήματα.

    const boundFunc = func.bind(context, arg1);
    boundFunc(arg2);
    

Διαφορές:

  • call και apply καλούν άμεσα τη συνάρτηση;
  • bind επιστρέφει μια νέα συνάρτηση που μπορεί να κληθεί αργότερα;
  • το apply είναι χρήσιμο όταν τα επιχειρήματα ήδη βρίσκονται σε πίνακα;
  • το bind είναι χρήσιμο για τη διατήρηση του πλαισίου σε callbacks και χειριστές συμβάντων.