下面这段代码报错<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>倒计时</title>
</head><body onLoad="_time.action()">
倒计时<span id="_time"></span>秒
</body>
<script>
var _time={
'code':function(){
if(this.fullTime<0){
window.clearInterval(this.intervalId);return;
}
document.getElementById('_time').innerHTML=this.fullTime;
this.fullTime--;
},
'action':function(){
this.fullTime=15;
this.intervalId=window.setInterval(this.code,1000);
}
};
</script>
</html>下面这段代码正常<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>倒计时</title>
</head><body onLoad="_time.action()">
倒计时<span id="_time"></span>秒
</body>
<script>
var _time={
'code':function(){
if(_time.fullTime<0){
window.clearInterval(_time.intervalId);return;
}
document.getElementById('_time').innerHTML=_time.fullTime;
_time.fullTime--;
},
'action':function(){
this.fullTime=15;
this.intervalId=window.setInterval(this.code,1000);
}
};
</script>
</html>在执行_time.action()时,this是_time,但执行到_time.code()时,this就变为了window,在此猜想,是不是因为window.setInterval(this.code,1000),此方法是将this.code进行了eval()处理,使this指向了全局变量window?求解