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

* Γνώση Υπολογιστών >> Προγραμματισμός >> JavaScript Προγραμματισμός

Τι είναι τα πώματα Καλό για το JavaScript

; Όταν ένα κλείσιμο δημιουργείται σε JavaScript , μπορείτε να αναφερθείτε τοπικές μεταβλητές μιας συνάρτησης , ακόμη και μετά τη λειτουργία έχει λήξει , με τις τιμές που είχαν κατά το κλείσιμο της λειτουργίας . Κάθε φορά που χρησιμοποιείτε μια συνάρτηση μέσα σε μια άλλη λειτουργία , χρησιμοποιήστε " eval " μέσα σε μια άλλη λειτουργία ή να ορίσετε μια μεταβλητή μέσα σε μια συνάρτηση χωρίς "var ", μπορείτε να δημιουργήσετε ένα κλείσιμο . Πολλοί προγραμματιστές να δημιουργήσουν το κλείσιμο χωρίς να το συνειδητοποιούν με τον καθορισμό ενός ανώνυμου λειτουργία μέσα σε μια συνάρτηση . Τα πώματα είναι χρήσιμο όταν θέλετε να περάσουμε τις μεταβλητές σε χειριστές συμβάντων ή AJAX λειτουργίες επανάκλησης και να μιμηθεί ιδιωτικές μεταβλητές και μεθόδους JavaScript αντικείμενα . Να είστε προσεκτικοί κατά τη δημιουργία κλείσιμο , όμως , γιατί μπορεί να προκαλέσουν διαρροές μνήμης στον Microsoft Internet Explorer . Κατανόηση πώματα
Η

Σε JavaScript και τις περισσότερες άλλες γλώσσες προγραμματισμού , οι τοπικές μεταβλητές μιας συνάρτησης καταστράφηκε μετά το τέλος της λειτουργίας . Ωστόσο , όταν δημιουργείτε μια συνάρτηση μέσα σε μια άλλη λειτουργία σε JavaScript , οι τοπικές μεταβλητές της εξωτερικής λειτουργίας διατηρείται ακόμη και μετά τερματίζει επειδή οι ​​μεταβλητές μπορεί να αναφέρεται από την εσωτερική λειτουργία . Το παράδειγμα που ακολουθεί περιέχει μια συνάρτηση " prizewinner " που δημιουργεί ένα κλείσιμο μέσα από ένα ανώνυμο λειτουργία, η οποία επιστρέφει . Καλούμε ότι η ανώνυμη λειτουργία απευθείας από το εξωτερικό , χωρίς καν να περάσει από τη μητρική λειτουργίας :

prizewinner λειτουργία ( όνομα ) { var νικητής = " Μπορείτε να κερδίσει το βραβείο , " + name ? Var ανακοινώσει = λειτουργία ( ) { alert ( νικητής ) ? } ? εάν ( η math.floor ( Math.random ( ) * 11 ) == 7 ) επιστρέφουν ανακοινώσει ? null επιστροφή? }

εάν ( var sayIt = Πρώτο βραβείο ( " Steve " ) ) sayIt ( ) ?
εικόνων Περνώντας παραμέτρους σε χειριστές συμβάντος
Η

Μία χρήση του κλεισίματος είναι να μεταβλητών σε χειριστές συμβάντων . Εξετάστε το ακόλουθο παράδειγμα στο οποίο ένα κλείσιμο που έχει δημιουργηθεί από μια ανώνυμη συνάρτηση που ορίζεται στο " setHandler . " Η ανώνυμη συνάρτηση παραπέμπει σε μια παράμετρο της « setHandler . " Στο σημείο οι πυρκαγιές περίπτωση, ακόμη κι αν « setHandler " έχει τελειώσει , οι τιμές των μεταβλητών της , συμπεριλαμβανομένων των παραμέτρων της , στο συμπέρασμα της συνάρτησης διατηρείται για την ανώνυμη συνάρτηση . Ένα ξεχωριστό κλεισίματος δημιουργείται για κάθε επανάληψη του βρόχου .

SetHandler λειτουργία ( πόρτα , βραβείο) { door.addEventListener ( "κλικ " , λειτουργία () { alert (" βραβείο για την πόρτα " + πόρτα + " είναι " + βραβείο) ? } , false) ? }

window.onload = λειτουργία ( ) { για ( var i = 1 ? i <= 3 ? i + + ) { setHandler ( document.getElementById ( " πόρτα " + i ) , το βραβείο [ i ] ) ? } }

Η Περνώντας παραμέτρους σε AJAX επανάκλησης Λειτουργίες
Η

παρόμοια με το προηγούμενο παράδειγμα , μπορούμε να περάσουμε παραμέτρους για AJAX λειτουργίες επανάκλησης με πώματα . Αν κάνετε μια κλήση AJAX στην οποία η μεταβλητή αίτημα είναι παγκόσμια , έχετε εξαλειφθεί η πιθανότητα να περάσει μια παράμετρο στη λειτουργία επανάκλησης , επειδή ένα ενιαίο παγκόσμιο αίτημα δημιουργείται . Κάνοντας το αίτημα μεταβλητή τοπικό , μπορείτε να δημιουργήσετε ένα κλείσιμο και να δώσει την λειτουργία επανάκλησης πρόσβαση στα δεδομένα αίτημα - ειδική . Στο παρακάτω παράδειγμα , δημιουργούμε ένα κλείσιμο καθορίζοντας τη λειτουργία επανάκλησης που χρησιμοποιεί μια μεταβλητή σε τοπικό επίπεδο, τη μητρική της λειτουργία . Ένα ξεχωριστό επανάκλησης δημιουργείται για κάθε ένα από τα 10 " makeRequest " κλήσεις

διαδικασίας λειτουργία () { για . ( Var i = 0 ? I <10 ? I + + ) { makeRequest ( i ) ? }

λειτουργία makeRequest ( που ) { var αίτημα ? useThis var = αναζήτηση ( η οποία ) ? αν ( window.XMLHttpRequest ) { = νέα αίτηση XMLHttpRequest ( ) ? } else if ( window.ActiveXObject ) { αίτημα = νέα ActiveXObject ( " Microisoft.XMLHTTP " ) ? } request.onreadystatechange = λειτουργία ( ) { μεταγλώττιση ( useThis ) ? } request.open ( " GET " , url ) ? request.send ( ) ? }
εικόνων Private μεταβλητές και Μέθοδοι JavaScript
Η

στο JavaScript , όλα τα μέλη ενός αντικειμένου είναι κοινό, σε αντίθεση με κάποιες άλλες αντικειμενοστραφείς γλώσσες που επιτρέπουν την ιδιωτική μεταβλητές και μεθόδους . Κλεισίματα σας επιτρέπουν να μιμηθούν ιδιωτικές μεθόδους και τις μεταβλητές στις JavaScript . Στο παρακάτω παράδειγμα , οι αντικείμενο «μυστικά» δημιουργείται και εκτελείται κατά τον ορισμό . Όταν εκτελείται, περιέχει ένα ανώνυμο αντικείμενο με δύο μεθόδους : " show " και " super ", το οποίο παίρνει μια παράμετρο . Τόσο η μεταβλητή " secretCode " και η λειτουργία " superSecret " μπορεί να προσεγγιστεί μόνο μέσα από τις δύο μεθόδους στην ενότητα " μυστικά " αντικείμενο . Στην πραγματικότητα , πρόκειται για ιδιώτες μέλη της

μυστικά var = λειτουργία () { var secretCode = ( ( ( 1 + Math.random ( ) ) * 0x100000 )

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα