function Change()
{
    var obj=new Object();
    obj.a=function()
{
    alert("a");
}
   obj.start=function()
{
      setInterval(this.a(),500)
}
return obj;
}   var c=new Change();
   c.start();为什么a方法只被调用了一次,而用setInterval("this.a()",500)这样写,则一次也不执行?

解决方案 »

  1.   


       function Change()
    {
        var obj=new Object();
        obj.a=function()
    {
        alert("a");
    }
       obj.start=function()
    {
    var that = this
          setInterval(this.a.bind(that),500)
    }
    return obj;
    }
     
       var c=new Change();
       c.start();
      

  2.   

    function Change()
    {
        var obj=new Object();
        obj.a=function()
    {
    alert("a");
    }
        obj.start=function()
    {
      var _this = this;
      setInterval(function (){
    _this.a();
      },500)
    }
    return obj;
    }
        var c=new Change();
        c.start();
      

  3.   

    setInterval(this.a.bind(that),500) 这个错了,方法中调用一个方法不能加括号,加“()”的意思是把方法的返回值作为参数。 
      

  4.   

    this的作用域问题
    你可以打印看看 setInterval( function(){} , 500 );
    中this指代的对象是哪个   就可以明白了
      

  5.   

    其实楼主的问题还没到作用域这么高级。
    主要是这写错了。
    setInterval(this.a, 500)
      

  6.   

    这个用this 没有问题 ,setInterval(this.obj.a, 500)  应该没问题吧
      

  7.   

    虽然LZ这个例子中a方法中没有用到this,但实际的应用中这种情况是很少的。所以还是要考虑到this作用域的问题