Η μέθοδος bind
Η μέθοδος bind χρησιμοποιείται για τη σύνδεση του context σε μια συνάρτηση.
Ως πρώτη παράμετρο πρέπει να μεταβιβάζεται
το context, και ως επόμενες παράμετροι - οι παράμετροι
της συνάρτησης. Η μέθοδος επιστρέφει μια νέα συνάρτηση,
μέσα στην οποία το this θα είναι ίσο με το context που μεταβιβάστηκε.
Σύνταξη
συνάρτηση.bind(context, παράμετρος1, παράμετρος2...);
Παράδειγμα
Ας υποθέσουμε ότι έχουμε ένα input:
<input id="elem" value="text">
Ας υποθέσουμε ότι ο σύνδεσμος προς αυτό το input είναι αποθηκευμένος σε μεταβλητή
elem:
let elem = document.querySelector('#elem');
Ας υποθέσουμε επίσης ότι έχουμε την ακόλουθη συνάρτηση
func:
function func(param1, param2) {
console.log(this.value + param1 + param2);
}
Ας χρησιμοποιήσουμε το bind για να δημιουργήσουμε μια νέα
συνάρτηση, η οποία θα είναι αντίγραφο της συνάρτησης func,
αλλά το this σε αυτήν θα είναι πάντα ίσο με το elem:
let newFunc = func.bind(elem);
Τώρα στη μεταβλητή newFunc βρίσκεται
μια συνάρτηση. Ας την καλέσουμε, μεταβιβάζοντας ως πρώτη
παράμετρο '1', και ως δεύτερη '2':
newFunc('1', '2');
Ας τα συγκεντρώσουμε όλα μαζί:
let elem = document.getElementById('elem');
function func(param1, param2) {
console.log(this.value + param1 + param2);
}
let newFunc = func.bind(elem);
newFunc('1', '2'); // θα εμφανίσει 'text12'
Παράδειγμα
Δεν είναι απαραίτητο να αποθηκεύουμε το αποτέλεσμα της λειτουργίας
του bind σε μια νέα συνάρτηση newFunc,
μπορούμε απλά να αντικαταστήσουμε την func:
let func = func.bind(elem);