所以我想将setInterval存储为对象属性,因为我经常喜欢使用短语“autoPlay”来描述立即启动的旋转器。当我在一系列脚本中不止一次使用“autoPlay”时,当我试图清除它时,我的JS会被绊倒,因为它不确定要清除哪一个。我的补救措施是把它作为属性放在某处,所以我可以通过一个对象来访问它,比如“newsRotator.autoPlay”。问题是,我不知道如何以这种方式存储它,因为它通常放在一个基本变量中,如下所示:
autoPlay = setInterval(this.forwardSlide, 5000);
这是我将其作为对象属性存储的一个示例,它无法清除间隔:
var newsRotator = {
run: function () {
$('.arrow').on('click', function (e) {
e.preventDefault();
clearInterval(newsRotator.autoPlay);
if ($(this).hasClass('back')) {
newsRotator.backSlide();
} else {
newsRotator.forwardSlide();
}
});
},
backSlide: function () {
(goes back one slide)
},
forwardSlide: function () {
(goes forwardone slide)
},
autoPlay: setInterval(this.forwardSlide, 5000),
init: function () {
this.run();
}
}
newsRotator.init()
答案 0 :(得分:0)
这实际上不是object constructor,因此它不会创建您需要的this
范围。因此,当调用setTimeout
时,this
引用窗口对象,该窗口对象不包含您引用的对象属性...
尝试按如下方式创建对象:
function NewsRotator() { ... }
然后用new
实例化一个:
var newsRotator = new NewsRotator();
然后,this
关键字的范围限定为该特定实例。