1

我有以下代码:

myObject = function(id){
    var self = this;
    var id = id;

    self.printId = function(){
        console.log(id)
    }
}

var index = 1;

function createObj(){
    myobj = new myObject(index);
    index++;

    jquery.animate({...},5000,function(){
        myobj.printId();
    });
} 

createObj();
createObj();

输出是:

2
2

我期望:

1
2

显然,当调用第二个 createObj() 时,我原来的 myobj 被覆盖了。如何确保在等待动画完成时我的 myobj 不会被覆盖?

4

1 回答 1

5

您需要在声明新对象时放置var关键字。

这是一个范围问题。

function createObj(){
    var myobj = new myObject(index);
    index++;

   jquery.animate({...},5000,function(){
       myobj.printId();
   });
 } 
于 2013-11-05T21:40:48.620 回答