Αντικείμενα και στιγμιότυπα
Για την javascript οτιδήποτε αποθηκεύεται σε μια μεταβλητή, μπορούμε να πούμε ότι είναι αντικείμενο (object).
Έτσι έχουμε:
let x = "hello";
Η παραπάνω πρόταση είναι μια συντομογραφία ισοδύναμη της:
let x = new String("hello");
Επίσης η πρόταση:
let x = 123;
Είναι μια συντομογραφία ισοδύναμη της:
let x = new Number(123);
Δημιουργία αντικειμένων
Σε γενικές γραμμές ισχύουν τα παρακάτω:
- Για να χρησιμοποιήσουμε ένα αντικείμενο πρέπει πρώτα να δημιουργήσουμε ένα στιγμιότυπο του αντικειμένου (instance).
- Η δημιουργία ενός αντικειμένου γίνεται με τη χρήση του τελεστή new
Για παράδειγμα:let d = new Date();
Στη μεταβλητή d έχει αποθηκευτεί ένα στιγμιότυπο του αντικειμένου Date - Υπάρχουν αντικείμενα για τα οποία δεν χρειάζεται να δημιουργήσουμε στιγμιότυπο όπως: Math, document, window κ.λπ..
- Κάθε στιγμιότυπο (ή αντικείμενο όπως θα το ονομάζουμε) έχει:
- Ιδιότητες ή χαρακτηριστικά (features, properties ή fields)
- Συναρτήσεις ή μεθόδους (functions ή methods)
- Δυνατότητα διαχείρισης συμβάντων (events)
- Δεν είναι υποχρεωτικό για ένα αντικείμενο να έχει ιδιότητες, συναρτήσεις και διαχειριστές συμβάντων αλλά κάποιο συνδυασμό αυτών.
- Μπορούμε να έχουμε πρόσβαση στις ιδιότητες και συναρτήσεις ενός αντικειμένου με τη χρήση του τελεστή της τελείας (.) (dot notation).
Παράδειγμα. Για να διαβάσουμε το μήκος κειμένου ενός String χρησιμοποιούμε την ιδιότητα length:let str = new String("hello there"); console.log(str.length);
11
- Οι ιδιότητες ενός αντικειμένου εκφράζονται συνήθως με ένα ουσιαστικό: length, width, height, href κ.λπ..
- Οι συναρτήσεις ενός αντικειμένου εκφράζονται συνήθως με ένα ρήμα: getHours(), sort(), push() κ.λπ..
- Μετά το όνομα της συνάρτησης ακολουθούν οι παρενθέσεις:
names.sort();
- Κάθε ιδιότητα έχει μια τιμή την οποία, κατά κανόνα, μπορούμε να την διαβάσουμε (read) ή να την αλλάξουμε (write).
- Υπάρχουν ιδιότητες οι οποίες είναι μόνο για ανάγνωση όπως το length ενός String. Στην περίπτωση αυτή λέμε ότι η ιδιότητα είναι Read only. Σε διαφορετική περίπτωση είναι Read/Write
- Ένα αντικείμενο μπορεί να έχει υποαντικείμενα (child object). Για παράδειγμα:
window.document
- Για να έχουμε πρόσβαση σε ένα υποαντικείμενο χρησιμοποιούμε πάλι τον τελεστή τελεία (.).
- Για να προσθέσουμε έναν διαχειριστή συμβάντος, χρησιμοποιούμε τη μέθοδο
addEventListener("eventname", functionname);όπου "eventname" είναι το όνομα του συμβάντος και functionname το όνομα της συνάρτησης που καλείται όταν το συμβάν προκύψει (η συνάρτηση αυτή λέγεται callback function).
let btn = document.getElementById("myButton"); btn.addEventListener("click", getvalue); function getvalue() { ... }