写了个面向对象轮播,实例化后默认执行这个defaultRunning()方法,执行正常,鼠标移动到对象上也正常停止播放,但当鼠标离开后,开始报错,似乎this的指向变了,目前没搞明白,麻烦大家给看看,谢谢
报错提示:
程序部分代码:
function Plays(){
//代码略
}
Plays.prototype = {
defaultRunning: function(){
//默认执行的方法
this.play();
//鼠标移动上去停止播放
this.obj.onmouseover = this.stop;
//鼠标离开后继续播放
this.obj.onmouseout = this.play;
},
prevPage: function(){
//上一个
},
nextPage: function(){
//下一个
console.log("nextPage执行的代码");
},
play: function(){
//默认定时执行
var _this = this;
timer = setInterval(function(){
_this.nextPage(); //报错的位置
},1000);
},
stop: function(){
clearInterval(timer);
}
}
new Plays(). defaultRunning();
onmouseover, 如果你没有做过特殊处理的话, 回调函数中的 this 指向的是你的obj,所以说,this的确会变得。
可以尝试改成:
調整了您的範例如下 Codepen 範例