2011-11-08 14 views
6

studiowałem kod źródłowy Twitter, i natknąłem się na następujący fragment:Dlaczego na Twitterze zdefiniowano na nowo okno.setTimeout i window.setInterval?

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

Dlaczego Twitter przedefiniować te funkcje?

Edytuj: Aby zobaczyć kod, przejdź do dowolnej strony użytkownika Twittera, otwórz źródło strony, a zobaczysz ten fragment w drugim bloku javascript.

+0

Jaki jest kontekst? Nie sądzę, aby to pytanie odpowiadało bez linku do pełnego kodu. – nrabinowitz

+0

@nrabinowitz Patrz edycja. – JCM

Odpowiedz

15

Jest to technika zastępowania globalnych funkcji setTimeout i setInterval w trybie wielu przeglądarek.

window.setTimeout, stosowany jako lwartością (po lewej stronie przypisania ), nie chodzić łańcuch prototypów, ale po prawej stronie, robi. To zawsze spowoduje wyciągnięcie własności z łańcucha prototypowego i umieszczenie go bezpośrednio na obiekcie.

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

+1

Jestem wielkim fanem tej odpowiedzi. –

+0

Idealne, dzięki. – JCM

+2

W przypadku, gdy nie chcesz czytać artykułu: Najważniejszą częścią jest to, że jest używany do obejścia błędu w IE. W szczególności przypisanie 'setTimeout = ...;' zgłasza wyjątek, chyba że użyjesz powyższej sztuczki. To samo dotyczy 'setInterval' i innych. – user123444555621

Powiązane problemy