2011-11-08 24 views
6

tôi đang học mã nguồn Twitter, và tôi đi qua các đoạn sau đây:Tại sao Twitter xác định lại window.setTimeout và window.setInterval?

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

Tại sao Twitter xác định lại không các chức năng này?

Chỉnh sửa: Để xem mã, hãy truy cập trang người dùng twitter bất kỳ, mở nguồn của trang và bạn sẽ thấy đoạn mã đó trong khối thứ hai của javascript.

+0

Ngữ cảnh là gì? Tôi không nghĩ rằng câu hỏi này là có thể trả lời mà không có một liên kết đến mã đầy đủ. – nrabinowitz

+0

@nrabinowitz Xem chỉnh sửa. – JCM

Trả lời

15

Đây là kỹ thuật thay thế các chức năng setTimeoutsetInterval trên toàn cầu theo kiểu trình duyệt chéo.

window.setTimeout, khi được sử dụng như một giá trị trái (ở phía bên trái của phép gán ), không đi bộ chuỗi nguyên mẫu, nhưng ở phía bên phải, nó. Vì vậy, điều này sẽ luôn luôn kéo một tài sản ra khỏi các mẫu thử nghiệm chuỗi và đặt nó ngay trên đối tượng.

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

+1

Tôi là một fan hâm mộ lớn của câu trả lời này. –

+0

Hoàn hảo, cảm ơn. – JCM

+2

Trong trường hợp bạn không muốn đọc bài viết: Phần quan trọng là điều này được sử dụng để làm việc xung quanh một lỗi trong IE. Cụ thể, việc gán 'setTimeout = ...;' ném một ngoại lệ trừ khi bạn sử dụng thủ thuật trên. Tương tự cho 'setInterval' và các giá trị khác. – user123444555621

Các vấn đề liên quan