window.setInterval不起作用

时间:2013-01-27 16:19:46

标签: javascript

  

可能重复:
  setInterval() only running function once

我使用以下脚本来理解函数上下文的概念。我从20日开始提醒并重复提醒。但是在显示20之后它就相当了。 当使用call方法并提供o2时,它应该得到值20并从那里重复。

<script type="text/javascript">

    var o2 = {
        local: 20
    }
    var local=0;
    function someFuncObject(){
        alert('Thats method object again ' + this.local++);
    }
 // window.setInterval(someFuncObject, 2000); //This works perfect!!!
    window.setInterval(someFuncObject.call(o2), 2000); // This does not, why?
</script>

另一方面,如果我使用window.setInterval(someFuncObject, 2000);,它可以正常工作并一次又一次地重复。问题是什么?

1 个答案:

答案 0 :(得分:9)

someFuncObject.call(o2)实际上调用了该函数。这意味着,传递到setInterval的内容是someFuncObject()返回的内容。 setInterval期望参数是函数本身,而不是函数返回的内容。

如果要控制thissomeFuncObject的值,可以使用匿名函数,如:

window.setInterval(function() {
    someFuncObject.call(o2);
}, 2000);