Stavo cercando di capire cosa potevo dalle funzioni di animazione di jQuery, ma ho finito per imbattersi in tutte le specie di funzioni interne che non comprendevo e alla fine sono arrivato su isWindow. Il codice per isWindow controlla se un oggetto ha la proprietà setInterval
e restituisce false altrimenti.jQuery's .isWindow metodo?
Naturalmente, qualsiasi oggetto potrebbe avere la proprietà setInterval
senza essere la finestra, e anche se sarebbe quasi dovuto essere un deliberato tentativo di sabotare la funzionalità di jQuery per avere un oggetto con quel nome proprietà esatta, posso immaginare alcuni casi ragionevoli dove potrebbe essere involontario.
Non c'è un modo migliore per verificare se un oggetto è un oggetto finestra? Non potevano usare qualcosa sulla falsariga di
obj.setInterval && obj.setInterval.toString() == 'function setIternval(){ [native code] }
So che il ritorno di toString
di una funzione interna non sta per essere standard in tutti i browser, ma gli scrittori di jQuery sembrano avere una grande comprensione di queste differenze tra browser. Sono anche consapevole che questo non è un metodo infallibile, in quanto qualcuno potrebbe facilmente ignorare il metodo toString
per restituire la stessa stringa, ma ciò impedirebbe comunque il problema di avere un oggetto scambiato per una finestra.
non vorrei chiedere se ho pensato che isWindow
è stato utilizzato solo su oggetti interni di jQuery, ma era parte di isPlainObject
, che viene utilizzato in .extend
, che può essere utilizzato su oggetti esterni.
"Naturalmente, qualsiasi oggetto potrebbe avere il setInterval proprietà senza essere la finestra" . Come immagini? – j08691
@ j08691, come fai a capire come immagino? – mowwwalker
Sto dicendo che dal momento che setInterval è una funzione della finestra di base di JavaScript, come può avere un oggetto? Non ha senso per me. – j08691