为什么我不能这样做:
function f(){console.log(this)}
f.call(this);
setInterval(f.call, 1000, this);
为什么我不能这样做:
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);
setInterval(f.bind(this), 1000);
虽然这只是一种不好的说法
因为您正在传递 的值, f.call
所以您失去了与 的关联f
。
语法是:
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 );
希望这可以帮助。