为什么Twitter重新定义window.setTimeout和window.setInterval?

JCM*_*JCM 6 javascript twitter settimeout setinterval

我正在研究Twitter源代码,我遇到了以下片段:

   window.setTimeout=window.setTimeout;window.setInterval=window.setInterval;
Run Code Online (Sandbox Code Playgroud)

为什么Twitter重新定义了这些功能?

编辑:要查看代码,请转到任何Twitter用户页面,打开页面源,您将在第二个javascript块中看到该片段.

aya*_*ami 15

这是一种以跨浏览器方式全局替换setTimeoutsetInterval运行的技术.

window.setTimeout,当用作左值(在赋值的左侧)时,不会走原型链,但在右侧,它会.因此,这将始终将属性从原型链中拉出并将其放在对象上.

请参阅http://www.adequatelygood.com/2011/4/Replacing-setTimeout-Globally.

  • 如果您不想阅读文章:关键部分是,这用于解决IE中的错误.具体来说,除非你使用上面的技巧,否则赋值`setTimeout = ...;`会抛出异常.`setInterval`和其他相同. (2认同)