日期:2014-05-16  浏览次数:20339 次

求助啊。。。js面向对象问题。。T。T
JScript code
LittleMan.prototype.start = function()
{
    setInterval(function(){
        this.update();
        },50);
}

这是我的一段js代码,上面的start方法和update方法都是LittleMan类中使用prototype定义的方法,现在我想在start方法中每50毫秒调用一次update方法(如上),但是每次都显示this.update is not a function 
大神们。。帮帮我啊。。。。

------解决方案--------------------
这样没错,属其它错误了。
TEST:
<div id="test">0</div>
<script>
function LittleMan(){}
LittleMan.prototype.update = function(n){document.getElementById("test").innerHTML = n}
LittleMan.prototype.start = function(){
var i = 0, self = this;
setInterval(function(){self.update(i++)},1000);
}
new LittleMan().start();
</script>
------解决方案--------------------
this的指向不对
LittleMan.prototype.start = function()
{
setInterval(function(){//该匿名函数不是对像的方法,故函数内this不指向对象,指向window
alert(this);//自己alert测试下就知道了
//this.update();
},50);
}
修改如下:
LittleMan.prototype.start = function()
{
setInterval(this.update,50);//此方法不完美,虽然会调用该函数,但不是作为对象的方法调用,update方法里面如果有this的话指向会是window而不是对象
}
LittleMan.prototype.start = function()
{
var update=this.update;
setInterval(function(){update();},50);//这种方式也可以,避开了this指向问题
}