2011-11-08 20 views
6

estaba estudiando el código fuente de Twitter, y me encontré con el siguiente fragmento:¿Por qué Twitter redefine window.setTimeout y window.setInterval?

window.setTimeout=window.setTimeout;window.setInterval=window.setInterval; 

¿Por qué Twitter redefinir estas funciones?

Editar: Para ver el código, vaya a cualquier página de usuario de Twitter, abra la fuente de la página, y verá ese fragmento en el segundo bloque de Javascript.

+0

¿Cuál es el contexto? No creo que esta pregunta sea respondida sin un enlace al código completo. – nrabinowitz

+0

@nrabinowitz Ver edición. – JCM

Respuesta

15

Esta es una técnica para reemplazar las funciones setTimeout y setInterval de forma global entre navegadores.

window.setTimeout, cuando se utiliza como valor izquierdo (en el lado izquierdo de la asignación ), no camina la cadena de prototipo, pero en el lado derecho, lo hace. Por lo tanto, esto siempre extraerá una propiedad de la cadena prototipo y la colocará sobre el objeto.

Ver http://www.adequatelygood.com/2011/4/Replacing-setTimeout-Globally.

+1

Soy un gran admirador de esta respuesta. –

+0

Perfecto, gracias. – JCM

+2

En caso de que no quiera leer el artículo: La parte crucial es que esto se usa para solucionar un error en IE. Específicamente, la asignación 'setTimeout = ...;' arroja una excepción a menos que use el truco anterior. Lo mismo para 'setInterval' y otros. – user123444555621