关于设置超时/间隔上下文
About setTimeout/Interval context
为什么我不能这样做:
function f(){console.log(this)}
f.call(this);
setInterval(f.call, 1000, this);
你应该
使用.bind
而不是.call
:
function f(){console.log(this)}
setInterval(f.bind(the_context_obj), 1000);
试试这个:
setInterval(f.call.bind(f, this), 1000);
http://jsfiddle.net/Qx3jU/
不过,这只是一种不好的说法setInterval(f.bind(this), 1000);
因为您传递的是 f.call
的值,所以您失去了与 f
的关联。
来自 Mozilla Dev 页面
语法为:
var intervalID = window.setInterval(func, delay[, param1, param2, ...]);
var intervalID = window.setInterval(code, delay);
请注意,在第一个语法中将其他参数传递给函数在 Internet Explorer 中不起作用。如果要在该浏览器上启用此功能,则必须使用兼容性代码(请参阅回调参数段落)。
那我建议你使用这样的匿名函数
var x = this;
setInterval( function() { f.call(x); }, 1000 );
希望这有帮助。
相关文章:
- 将函数的上下文应用于javascript变量
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- 使用JQuery的动态上下文菜单
- 如何访问UIWebView'的子窗口上下文
- 使用优化器在慢速连接上加载main.js时需要js超时
- JQuery在单击正文时隐藏上下文菜单
- JQuery上下文菜单显示/隐藏问题
- 如何从HTTP上下文对象中获取Post数据
- 当浏览器控制台未打开时,为什么要求会导致Internet Explorer 9超时
- HTML字符串作为上下文
- 超时功能的性能
- 为什么我的上下文选择器和.buttonset()在ie中花费了这么长时间
- 使用不同的超时对数组中的每个项目进行角度动画处理
- 丢失对象“;这个“;方法中的上下文
- 设置第一次执行的超时
- node.js测试事件是否是在不使用超时的情况下使用sinon.js发出的
- 防止在移动Safari(iPad/iPhone)中长按/长按默认上下文菜单
- 关于设置超时/间隔上下文
- 上下文丢失.设置超时
- JavaScript 设置超时在 Android 上下文切换上