⊗jsPmCxInr 433 of 505 menu

Βασικές αρχές εργασίας με το context στο JavaScript

Ας υποθέσουμε ότι έχουμε κάποια συνάρτηση func, μέσα στην οποία χρησιμοποιείται το this:

function func() { console.log(this.value); }

Σε τι δείχνει το this σε αυτή τη συνάρτηση; Κι εμείς δεν ξέρουμε. Και το JavaScript δεν ξέρει. Και η ίδια η συνάρτηση δεν ξέρει. Δηλαδή τη στιγμή δημιουργίας της συνάρτησης, το σε τι ακριβώς δείχνει το this, δεν έχει καθοριστεί. Και θα καθοριστεί μόνο όταν καλεστεί αυτή η συνάρτηση.

Ας υποθέσουμε ότι έχουμε κάποιο input:

<input id="elem" value="text">

Ας δέσουμε σε αυτό το input τη συνάρτησή μας func έτσι ώστε να εκτελείται όταν χάσει το focus το input. Τώρα τη στιγμή εκτέλεσης της συνάρτησης το this θα δείχνει στο input μας:

let elem = document.querySelector('#elem'); elem.addEventListener('blur', func); function func() { console.log(this.value); // όταν χάσει το focus θα εμφανίσει 'text' }

Αλλά μπορεί να μην έχουμε μόνο ένα input, αλλά πολλά:

<input id="elem1" value="text1"> <input id="elem2" value="text2">

Και σε κάθε ένα από αυτά τα inputs μπορούμε να δέσουμε τη συνάρτησή μας func. Σε αυτή την περίπτωση για το πρώτο στοιχείο το this τη στιγμή κλήσης της συνάρτησης θα δείχνει σε αυτό, ενώ για το δεύτερο - σε αυτό.

Στην πράξη αυτό σημαίνει ότι το this μέσα στη συνάρτηση εξαρτάται από το σε ποιο input χάσαμε το focus:

let elem1 = document.querySelector('#elem1'); elem1.addEventListener('blur', func); let elem2 = document.querySelector('#elem2'); elem2.addEventListener('blur', func); function func() { console.log(this.value); // θα εμφανίσει είτε 'text1' είτε 'text2' }

Γενικά, αυτό το χαρακτηριστικό του this είναι πολύ βολικό - δημιουργούμε μόνο μία συνάρτηση και τη δένουμε σε οποιοδήποτε αριθμό inputs. Αν το this δεν έδειχνε στο στοιχείο στο οποίο συνέβη το event, τότε εμείς δεν θα μπορούσαμε να το κάνουμε αυτό - θα έπρεπε για κάθε input να δημιουργούμε τη δική του συνάρτηση με τον ίδιο κώδικα!

Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη