2010-04-15 10 views
53

Fino ad ora ho appena messo tutta la mia bontà jQuery all'interno della funzione $(document).ready(), incluse le semplici funzioni utilizzate in determinate interazioni utente.funzioni all'interno o all'esterno del documento jquery pronto

Ma le funzioni che non richiedono il caricamento del documento DOM o che vengono comunque richiamate in seguito, possono essere posizionate anche all'esterno dello $(document).ready(). Consideriamo ad esempio una funzione di validazione molto semplice come ad esempio:

function hexvalidate(color) { 
// Validates 3-digit or 6-digit hex color codes 
var reg = /^(#)?([0-9a-fA-F]{3})([0-9a-fA-F]{3})?$/; 
return reg.test(color); 
} 

la funzione viene chiamata solo all'interno della funzione $(document).ready() però.

Qual è la procedura consigliata (sintassi, velocità); ponendo tale funzione all'interno di o al di fuori di la funzione di documento pronto per jquery?

risposta

69

Inseritelo all'interno di in modo da non inquinare lo spazio dei nomi globale. Garantisce inoltre una risoluzione più rapida del nome della funzione a causa delle catene di scope di JavaScript.

Metti il ​​all'esterno di se è un componente riutilizzabile in modo da poterlo spostare facilmente in un file separato e chiamare da diversi contesti.

Dal momento che si utilizza già JQuery, esso valori di nota, che nel suo caso si consiglia di definire hexvalidate come JQuery pluginfuori e poi richiamarlo all'interno.

+1

+1 - bello modifica. – karim79

7

un vantaggio di mettere tali funzioni all'interno della funzione pronta per il documento è che non inquinano il tuo spazio dei nomi globale ... con il rovescio della medaglia che se ne hai bisogno da qualche altra parte sulla pagina non saranno disponibili.

4

Se tutte le funzioni vengono richiamate solo dal blocco jQuery(function() { }), inserirle al suo interno. Altrimenti si sta inquinando inutilmente lo spazio dei nomi globale, che potrebbe portare a conflitti lungo la strada.

Dichiarare solo le funzioni globalmente utilizzate anche dal codice in altri ambiti.

2

Se si sta creando una funzione che deve essere chiamata al di fuori dell'ambito della funzione $ (document) .ready(), tenerla al di fuori della funzione $ (document) .ready().

Altrimenti tenerlo interno.

10

Non penso che dovresti usare le "funzioni giuste" in primo luogo. In OOP javascript una "funzione" di solito appartiene a uno dei quattro tipi distinti:

  • Costruttore o anonimo 'init' di chiusura - utilizzato per costruire oggetti. L'unico tipo di funzione che è consentito essere globale
  • Metodo - funzione che è una parte di un oggetto
  • Utility - funzione interna di un costruttore/metodo, invisibile dall'esterno
  • costante - una costante funzionale passato come un parametro

es.

(function() { <- init closure 

     function helper1() { <- utility } 

     globalSomething = { 

       foobar: function() { <- method 
        xyz.replace(/.../, function() { <- constant }) 

       } 
     } 
)() 

Nel tuo esempio, 'hexvalidate' è ovviamente una parte di oggetto Validator, che, a sua volta, può essere fatto un plugin jQuery:

(function($) { 
     $.validate = { 
      hexColor: function(color) { ... your code } 
      more validators... 
     } 
    )(jQuery) 
Problemi correlati