Προγραμματισμός

Χρήση ενσωματωμένων αντικειμένων JavaScript

Το JavaScript διαθέτει πολλά ενσωματωμένα αντικείμενα που επεκτείνουν την ευελιξία της γλώσσας. Αυτά τα αντικείμενα είναι Date, Math, String, Array και Object. Αρκετά από αυτά τα αντικείμενα "δανείζονται" από τις προδιαγραφές γλώσσας Java, αλλά η εφαρμογή τους από τα JavaScript είναι διαφορετική. Εάν είστε εξοικειωμένοι με την Java, θα θελήσετε να εξετάσετε προσεκτικά τους ενσωματωμένους τύπους αντικειμένων της JavaScript για να αποφύγετε τυχόν σύγχυση.

Το μοντέλο αντικειμένου JavaScript είναι απλό. Το μεγαλύτερο μέρος αυτών των αντικειμένων ασχολείται με το περιεχόμενο παραθύρου - έγγραφα, συνδέσμους, φόρμες και ούτω καθεξής. Εκτός από τα αντικείμενα περιεχομένου παραθύρου, η JavaScript υποστηρίζει μια μικρή χούφτα "ενσωματωμένων" αντικειμένων. Αυτά τα ενσωματωμένα αντικείμενα είναι διαθέσιμα ανεξάρτητα από το περιεχόμενο του παραθύρου και λειτουργούν ανεξάρτητα από οποιαδήποτε σελίδα έχει φορτώσει το πρόγραμμα περιήγησής σας.

Εκμάθηση JavaScript

Αυτό το άρθρο είναι μέρος του αρχείου τεχνικού περιεχομένου JavaWorld. Μπορείτε να μάθετε πολλά για τον προγραμματισμό JavaScript διαβάζοντας άρθρα στο Σειρά JavaScript, απλώς λάβετε υπόψη ότι ορισμένες από τις πληροφορίες είναι πιθανό να είναι ξεπερασμένες. Για περισσότερες πληροφορίες σχετικά με τον προγραμματισμό με JavaScript, ανατρέξτε στην ενότητα "Χρήση JavaScript και φορμών" και "Εντοπισμός σφαλμάτων JavaScript"

Τα ενσωματωμένα αντικείμενα είναι Date, Math, String, Array και Object. Κάθε ένα χρησιμοποιείται με μοναδικό και όχι αρκετά συνεπές τρόπο. Επιπλέον, οι νεότερες εκδόσεις του JavaScript (όπως βρίσκονται στο Netscape "Atlas," αυτήν τη στιγμή σε beta) εφαρμόζουν πολλά από αυτά τα αντικείμενα με διαφορετικό τρόπο από ό, τι στο Netscape 2.0. Σε αυτήν τη στήλη θα εξετάσουμε αυτά τα ενσωματωμένα αντικείμενα και πώς να τα χρησιμοποιήσουμε. Και θα σημειώσουμε τις ιδιορρυθμίες που θα συναντήσετε καθώς εφαρμόζετε αυτά τα αντικείμενα στις σελίδες σας JavaScript.

Κατανόηση του αντικειμένου συμβολοσειράς

Από όλα τα αντικείμενα JavaScript, το αντικείμενο String είναι το πιο συχνά χρησιμοποιούμενο. Στην εφαρμογή Netscape 2.0 JavaScript, δημιουργούνται νέα αντικείμενα συμβολοσειράς έμμεσα χρησιμοποιώντας μια μεταβλητή ανάθεση. Για παράδειγμα,

var myString = "Αυτή είναι μια συμβολοσειρά";

δημιουργεί μια συμβολοσειρά, με το καθορισμένο κείμενο, που ονομάζεται myString. Στο Netscape 2.0, δεν υπάρχει πραγματικό αντικείμενο που ονομάζεται συμβολοσειρά και η προσπάθεια εμφάνισης ενός νέου αντικειμένου String χρησιμοποιώντας τη νέα δήλωση οδηγεί σε σφάλμα, καθώς το String (ή string) δεν είναι καθορισμένη λέξη-κλειδί. Στην έκδοση Atlas του Netscape, ωστόσο, το String είναι ένα καλόπιστο αντικείμενο και η λέξη-κλειδί String μπορεί να χρησιμοποιηθεί για τη δημιουργία νέων συμβολοσειρών. Οι ακόλουθες δύο προσεγγίσεις επιτρέπονται στον Atlas, αλλά όχι στο Netscape 2.0.

var myString = νέα συμβολοσειρά (); myString = "Αυτή είναι μια συμβολοσειρά";

και

var myString = new String ("Αυτή είναι μια συμβολοσειρά");

Τα συμβολοσειρά αντικείμενα έχουν μία ιδιότητα: μήκος. Η ιδιότητα length επιστρέφει το μήκος της συμβολοσειράς και χρησιμοποιεί τη σύνταξη string.length, όπου string είναι το όνομα της μεταβλητής string. Και οι δύο παρακάτω οθόνες 16.

ειδοποίηση ("Αυτό είναι μια συμβολοσειρά". μήκος)

και

var myString = "Αυτή είναι μια συμβολοσειρά"; ειδοποίηση (myString.length);

Ενώ μπορεί να υπάρχει μόνο μια ιδιότητα συμβολοσειράς, η JavaScript υποστηρίζει μεγάλο αριθμό μεθόδων που μπορούν να χρησιμοποιηθούν με συμβολοσειρές. Αυτές οι μέθοδοι μπορούν να χωριστούν περίπου σε δύο ευρείες κατασκηνώσεις: διαχείριση συμβολοσειρών και μορφή κειμένου.

Περισσότερα από το JavaWorld

Θέλετε περισσότερες εταιρικές ειδήσεις Java; Αποκτήστε το ενημερωτικό δελτίο JavaWorld Enterprise Java στα εισερχόμενά σας.

Οι μέθοδοι διαχείρισης συμβολοσειρών περιλαμβάνουν υπόστρωμα, ευρετήριο, lastIndexOf, και στοLowerCase. Αυτά χρησιμοποιούνται για την επιστροφή ή την αλλαγή του περιεχομένου της συμβολοσειράς με κάποιο τρόπο. Για παράδειγμα, η μέθοδος substring επιστρέφει ένα καθορισμένο τμήμα μιας συμβολοσειράς. Η μέθοδος indexOf καθορίζει τη θέση ενός χαρακτήρα ή μιας ομάδας χαρακτήρων σε μια συμβολοσειρά. Και η μέθοδος toLowerCase μετατρέπει τη συμβολοσειρά σε πεζά. (Όπως μπορείτε να φανταστείτε, υπάρχει επίσης ένα toUpperCase μέθοδος.)

Οι μέθοδοι μορφής κειμένου χρησιμοποιούνται για τη μορφοποίηση κειμένου σε ένα έγγραφο με κάποιο ειδικό τρόπο και παρέχονται ως εναλλακτικές λύσεις για τη χρήση ετικετών HTML για τον ίδιο σκοπό. Αυτές οι μέθοδοι περιλαμβάνουν μεγάλο, μικρό, sup, sub, anchor, link και blink.

Οι μέθοδοι συμβολοσειράς μπορούν να χρησιμοποιηθούν απευθείας σε συμβολοσειρές ή σε μεταβλητές που περιέχουν συμβολοσειρές. Οι μέθοδοι χρησιμοποιούν πάντα ανοιχτές και κλειστές παρενθέσεις, ακόμη και αν η μέθοδος δεν χρησιμοποιεί παραμέτρους. Για παράδειγμα, για να μετατρέψετε κείμενο σε κεφαλαία, θα χρησιμοποιούσατε ένα από τα ακόλουθα:

var tempVar = "αυτό το κείμενο είναι πλέον κεφαλαίο" .toUpperCase ();

ή

var myString = "αυτό το κείμενο είναι τώρα κεφαλαίο"; var tempVar = myString.toUpperCase ();

Στο Netscape 2.0 υπάρχει μόνο ένα αντικείμενο String και όλες οι συμβολοσειρές δημιουργούνται από αυτό. Αντίθετα, οι συμβολοσειρές είναι αντικείμενα πρώτης κατηγορίας στον Άτλαντα και κάθε νέα συμβολοσειρά αντιμετωπίζεται ως ξεχωριστό αντικείμενο. Η συμπεριφορά ενός αντικειμένου των συμβολοσειρών στο Netscape 2.0 μπορεί να προκαλέσει κάποιες ανεπιθύμητες ενέργειες. Πάρτε το σύντομο τμήμα σεναρίου που ακολουθεί. Δημιουργούνται δύο χορδές: χορδή1 και χορδή2. Μια νέα ιδιότητα (ονομάζεται έξτρα) εκχωρείται στη συμβολοσειρά1. Ωστόσο, το μήνυμα προειδοποίησης δείχνει ότι η ιδιοκτησία ανήκει επίσης τώρα στο string2.

 string1 = "this is string 1" string2 = "this is string 2" string1.extra = "new property" ειδοποίηση (string2.extra) 

Από τεχνική άποψη, οι χορδές είναι "αμετάβλητες" σε JavaScript. Δηλαδή, το περιεχόμενο της συμβολοσειράς είναι στατικό και δεν μπορεί να αλλάξει. Στο Netscape 2.0, το JavaScript μπορεί να τροποποιήσει μια συμβολοσειρά μόνο δημιουργώντας μια νέα θέση στη μνήμη για αυτήν. Εξαιτίας αυτού, ένα σενάριο που τροποποιεί μια συμβολοσειρά πολλές φορές είναι επιρρεπές σε σφάλματα μνήμης. Κάθε φορά που αλλάζει η συμβολοσειρά, το JavaScript δημιουργεί μια νέα θέση στη μνήμη για τη νέα έκδοση. Δημιουργούνται νέες χορδές πριν από τη συλλογή απορριμμάτων για να καταστρέψετε την παλιά συμβολοσειρά. Τελικά, η JavaScript χρησιμοποιεί όλη τη διαθέσιμη μνήμη της και παρουσιάζεται σφάλμα "εκτός μνήμης".

Ένα κλασικό παράδειγμα αυτού του προβλήματος μπορεί να φανεί στα δημοφιλή "κύλιση μηνυμάτων" JavaScript όπου ένα μήνυμα μετακινείται στη γραμμή κατάστασης ή σε ένα πλαίσιο κειμένου. Για κάθε πάσο, ο κύλινδρος επαναπροσδιορίζει τη μεταβλητή συμβολοσειράς που εμφανίζεται. Η μνήμη τελικά εξαντλείται επειδή το JavaScript δημιουργεί νέες εμφανίσεις της συμβολοσειράς με κάθε πάσο. Για παράδειγμα, το ακόλουθο σενάριο τελικά (νωρίτερα σε ορισμένες πλατφόρμες, όπως τα Windows 3.1) θα προκαλέσει σφάλμα "εκτός μνήμης":

 var count = 0; var text = "Πρόκειται για δοκιμή κύλισης JavaScript."; πάπυρος(); λειτουργία κύλισης () {var myString = text.substring (count, text.length) + text.substring (0, count) window.status = myString if (count <text.length) count ++; αλλιώς μετρήστε = 0; setTimeout ("κύλιση ()", 333); // 333ms είναι η ελάχιστη καθυστέρηση για το Netscape 2.0} 

Μια απλή επανεγγραφή αποφεύγει το πρόβλημα δημιουργίας νέων μπλοκ μνήμης. Διαγράψτε την εκχώρηση μεταβλητής myString και αναλύστε το κείμενο απευθείας στη γραμμή κατάστασης, χρησιμοποιώντας το window.status.

window.status = text.substring (count, text.length) + text.substring (0, Count)

(Ενώ η παραπάνω προσέγγιση αποφεύγει το πρόβλημα αναπαραγωγής συμβολοσειράς-αντικειμένου JavaScript, εξακολουθούν να υπάρχουν διαρροές μνήμης λόγω της χρήσης του μέθοδος setTimeout. Πάνω από πολλές επαναλήψεις - συνήθως αρκετές χιλιάδες ή περισσότερες - το setTimeout θα καταναλώσει όλη τη διαθέσιμη μνήμη και τελικά το JavaScript θα εμφανίσει ένα μήνυμα "εξαντλημένης μνήμης".)

Για αναφορά σας, ακολουθούν οι μέθοδοι και οι ιδιότητες που χρησιμοποιούνται με το αντικείμενο συμβολοσειράς JavaScript:

Ιδιότητες συμβολοσειράς

μήκοςΤο μήκος μιας συμβολοσειράς

Μέθοδοι συμβολοσειράς

άγκυραΔημιουργεί ένα όνομα αγκύρωσης (στόχος υπερκειμένου)
μεγάλοΟρίζει το κείμενο σε μεγάλο
αναβοσβήνωΟρίζει το κείμενο σε αναβοσβήνει
τολμηρόςΟρίζει κείμενο σε έντονους χαρακτήρες
charAtΕπιστρέφει τον χαρακτήρα σε καθορισμένη θέση
σταθερόςΟρίζει κείμενο σε γραμματοσειρά σταθερού βήματος
γραμματοσειράΟρίζει το χρώμα της γραμματοσειράς
μέγεθος γραμματοσειράςΟρίζει το μέγεθος της γραμματοσειράς
ευρετήριοΕπιστρέφει την πρώτη εμφάνιση του χαρακτήρα x ξεκινώντας από τη θέση y
πλάγια γραφήΟρίζει κείμενο σε πλάγιους χαρακτήρες
lastIndexOfΕπιστρέφει την τελευταία εμφάνιση του χαρακτήρα x ξεκινώντας από τη θέση y
ΣύνδεσμοςΔημιουργεί έναν υπερσύνδεσμο
μικρόΟρίζει κείμενο σε μικρό
απεργίαΟρίζει κείμενο σε απεργία
υποΟρίζει κείμενο σε συνδρομή
υπόστρωμαΕπιστρέφει ένα τμήμα μιας συμβολοσειράς
γουλιάΡυθμίζει κείμενο σε υπερκείμενο
στοLowerStringΜετατρέπει μια συμβολοσειρά σε πεζά
toUpperStringΜετατρέπει μια συμβολοσειρά σε κεφαλαία

Χρήση JavaScript ως επιστημονική αριθμομηχανή

Το αντικείμενο Math της JavaScript παρέχει προηγμένες αριθμητικές και τριγωνομετρικές συναρτήσεις, επεκτείνοντας τους βασικούς αριθμητικούς τελεστές της JavaScript (συν, πλην, πολλαπλασιασμός, διαίρεση). Το αντικείμενο Math σε JavaScript δανείζεται από την Java. Στην πραγματικότητα, η εφαρμογή του μαθηματικού αντικειμένου σε JavaScript μοιάζει με την κλάση μαθηματικών στην Java, εκτός από το ότι το αντικείμενο Math Math προσφέρει λιγότερες μεθόδους.

Οι ιδιότητες αντικειμένου Math του JavaScript αντιμετωπίζονται ως σταθερές. Στην πραγματικότητα, τα ονόματα των ιδιοτήτων είναι σε κεφαλαία, σύμφωνα με τη συνήθη σύμβαση χρήσης κεφαλαίων μεταβλητών σταθερών. Αυτές οι ιδιότητες επιστρέφουν συχνά χρησιμοποιούμενες τιμές, όπως πι και η τετραγωνική ρίζα του 2. Οι μαθηματικές μέθοδοι χρησιμοποιούνται σε μαθηματικούς και τριγωνομετρικούς υπολογισμούς. Οι εύχρηστες μέθοδοι μαθηματικών αντικειμένων περιλαμβάνουν οροφή, δάπεδο, pow, exp (exponent), max, min, round και random. (Ωστόσο, το Random είναι διαθέσιμο μόνο όταν χρησιμοποιείτε την πλατφόρμα X Window.)

Το αντικείμενο Math είναι στατικό, επομένως δεν χρειάζεται να δημιουργήσετε ένα νέο αντικείμενο Math για να το χρησιμοποιήσετε. Για να αποκτήσετε πρόσβαση στις ιδιότητες και τη μέθοδο του αντικειμένου Math, απλώς καθορίζετε το αντικείμενο Math, μαζί με τη μέθοδο ή την ιδιότητα που επιθυμείτε. Για παράδειγμα, για να επιστρέψετε την τιμή του πι, εσυ χρησιμοποιεις:

var pi = Math.PI;

Ομοίως, για να χρησιμοποιήσετε μια μαθηματική μέθοδο παρέχετε το όνομα της μεθόδου, μαζί με τις παραμέτρους που θέλετε να χρησιμοποιήσετε. Για παράδειγμα, για να στρογγυλοποιήσετε την τιμή του πι, θα χρησιμοποιούσατε:

var pi = Math.PI; var pieAreRound = Math.round (pi); // εμφανίζει 3

Σημειώστε ότι πρέπει να καθορίσετε το μαθηματικό αντικείμενο με όνομα για κάθε μέθοδο / ιδιότητα Math που θέλετε να χρησιμοποιήσετε. Το JavaScript δεν αναγνωρίζει τις λέξεις-κλειδιά PI και στρογγυλοποιούνται από μόνες τους. Εξαίρεση: μπορείτε να χρησιμοποιήσετε το με δήλωση για να συσχετίσετε τα ονόματα των μεθόδων και των ιδιοτήτων με το αντικείμενο Math. Αυτή η τεχνική είναι μια πρακτική εξοικονόμηση χώρου όταν πρέπει να χρησιμοποιήσετε πολλές ιδιότητες και μεθόδους μαθηματικών. Το προηγούμενο παράδειγμα μπορεί να γραφτεί ως

με (Math) {var pi = PI; var pieAreRound = στρογγυλό (pi); ειδοποίηση (pieAreRound)}

Για αναφορά σας, εδώ είναι οι ιδιότητες και οι μέθοδοι που υποστηρίζονται από το αντικείμενο Math του JavaScript.

Μαθηματικά Ιδιότητες

μιΗ σταθερά του Euler
LN2Ο φυσικός λογάριθμος του 2
LN10Ο φυσικός λογάριθμος των 10
LOG2EΟ λογάριθμος βάσης 2 του e
LOG10EΟ λογάριθμος βάσης 10 του e
πιΤο αριθμητικό ισοδύναμο PI: 3.14 κ.λπ.
SQRT1_2Η τετραγωνική ρίζα του μισού
SQRT2Η τετραγωνική ρίζα του 2

Μέθοδοι μαθηματικών

κοιλιακοιΕπιστρέφει την απόλυτη τιμή ενός αριθμού
acosΕπιστρέφει το συνημίτονο ενός αριθμού
όπως λέμεΕπιστρέφει το ηχητικό σήμα ενός αριθμού
ένα μαύρισμαΕπιστρέφει την εφαπτομένη τόξου ενός αριθμού
ανώτατο όριοΕπιστρέφει τον λιγότερο ακέραιο μεγαλύτερο ή ίσο με έναν αριθμό
συνΕπιστρέφει το συνημίτονο ενός αριθμού
λ.χ.Επιστρέφει το e (σταθερά του Euler) στη δύναμη ενός αριθμού
πάτωμαΕπιστρέφει τον μεγαλύτερο ακέραιο μικρότερο ή ίσο με το όρισμα
κούτσουροΕπιστρέφει τον φυσικό λογάριθμο (βάση e) ενός αριθμού
ΜέγιστηΕπιστρέφει τη μεγαλύτερη από τις δύο τιμές
ελάχΕπιστρέφει τις μικρότερες από δύο τιμές
δύναμηΕπιστρέφει την τιμή του αριθμού φορές μια καθορισμένη ισχύ
τυχαίοςΕπιστρέφει έναν τυχαίο αριθμό (μόνο πλατφόρμες X)
γύροςΕπιστρέφει έναν αριθμό στρογγυλεμένο στην πλησιέστερη ολόκληρη τιμή
αμαρτίαΕπιστρέφει το ημίτονο ενός αριθμού
τ.μ.Επιστρέφει την τετραγωνική ρίζα ενός αριθμού
ηλιοκαμένοςΕπιστρέφει την εφαπτομένη ενός αριθμού

Ζητώντας JavaScript για μια ημερομηνία

Επίσης, δανείστηκε από την Java το αντικείμενο Date, το οποίο μπορεί να χρησιμοποιηθεί σε JavaScript για τον προσδιορισμό της τρέχουσας ώρας και ημερομηνίας. Μια δημοφιλής εφαρμογή JavaScript του αντικειμένου Date εμφανίζει ένα ψηφιακό ρολόι σε ένα πλαίσιο κειμένου. Το σενάριο χρησιμοποιεί το αντικείμενο Date για να ενημερώνει το ρολόι μία φορά κάθε δευτερόλεπτο. Μπορείτε επίσης να χρησιμοποιήσετε το αντικείμενο Date για να εκτελέσετε μαθηματικά ημερομηνίας. Για παράδειγμα, το σενάριό σας μπορεί να καθορίσει τον αριθμό των ημερών από τώρα έως μια συγκεκριμένη μελλοντική ημερομηνία. Μπορείτε να το χρησιμοποιήσετε για να εμφανιστεί μια "αντίστροφη μέτρηση", όπως ο αριθμός των ημερών που απομένουν από τη μεγάλη πώληση της εταιρείας σας.

Το JavaScript αντιμετωπίζει το αντικείμενο Date ως κλάση κατασκευαστή. Για να χρησιμοποιήσετε την ημερομηνία πρέπει να δημιουργήσετε ένα νέο αντικείμενο ημερομηνίας. Στη συνέχεια, μπορείτε να εφαρμόσετε τις διάφορες μεθόδους ημερομηνίας για να λάβετε και να ορίσετε ημερομηνίες. (Το αντικείμενο Ημερομηνία δεν έχει ιδιότητες.) Εάν είστε εξοικειωμένοι με την κλάση Ημερομηνία στην Java, θα βρείτε τις ιδιότητες του αντικειμένου Ημερομηνία JavaScript σε μεγάλο βαθμό το ίδιο. Οι πιο συχνά χρησιμοποιούμενες μέθοδοι είναι οι παίρνω μεθόδους, οι οποίες λαμβάνουν την ώρα και την ημερομηνία της τιμής στο αντικείμενο Ημερομηνία. Αυτές οι μέθοδοι είναι:

  • getHours () - Επιστρέφει την ώρα
  • getMinutes () - Επιστρέφει τα λεπτά
  • getSeconds () - Επιστρέφει τα δευτερόλεπτα
  • getYear () - Επιστρέφει το έτος ("96" είναι 1996)
  • getMonth () - Επιστρέφει τον μήνα ("0" είναι Ιανουάριος)
  • getDate () - Επιστρέφει την ημέρα του μήνα
  • getDay () - Επιστρέφει την ημέρα της εβδομάδας (το "0" είναι Κυριακή)

(Το αντικείμενο Ημερομηνία JavaScript προβλέπει επίσης τον καθορισμό της ώρας και της ημερομηνίας του αντικειμένου Ημερομηνία, αλλά σπάνια χρησιμοποιούνται.)

Η κατασκευή ενός νέου αντικειμένου ημερομηνίας μπορεί να έχει διάφορες μορφές. Για να επιστρέψετε ένα αντικείμενο που περιέχει την τρέχουσα ημερομηνία και ώρα, χρησιμοποιείτε το αντικείμενο Ημερομηνία χωρίς παραμέτρους. Στα ακόλουθα, date_obj είναι ένα νέο αντικείμενο, που περιέχει την τιμή της τρέχουσας ημερομηνίας και ώρας, όπως ορίζεται από το ρολόι συστήματος του υπολογιστή.

var date_obj = νέο Ημερομηνία ();

Εναλλακτικά, μπορείτε να καθορίσετε μια δεδομένη ημερομηνία και ώρα ως μέρος του κατασκευαστή ημερομηνιών. Επιτρέπεται οποιαδήποτε από αυτές τις μεθόδους - και οι δύο ορίζουν το νέο αντικείμενο ημερομηνίας την 1η Ιανουαρίου 1997, τα μεσάνυχτα τοπική ώρα.

var date_obj = νέα Ημερομηνία ("1 Ιανουαρίου 1997 00:00:00")

και

var date_obj = νέα ημερομηνία (97, 0, 1, 12, 0, 0)

Για να χρησιμοποιήσετε μια μέθοδο ημερομηνίας, προσαρτήστε τη μέθοδο στο αντικείμενο ημερομηνίας που δημιουργήσατε προηγουμένως. Για παράδειγμα, για να επιστρέψετε το τρέχον έτος, χρησιμοποιήστε:

var now = νέο Ημερομηνία (); var yearNow = now.getYear ();

Για αναφορά σας, ακολουθούν οι μέθοδοι που υποστηρίζονται από το αντικείμενο Date της JavaScript