将 setInterval 存储为对象属性
Storing setInterval as object property
所以我想将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()
这实际上不是一个对象构造函数,因此它不会创建您需要的this
范围。因此,当调用setTimeout
时,this
引用窗口对象,该对象不包含您引用的对象属性...
尝试按如下方式创建对象:
function NewsRotator() { ... }
然后用new
实例化一个:
var newsRotator = new NewsRotator();
然后,this
关键字的范围限定为该特定实例。
相关文章:
- 如何从对象的原型方法访问JavaScript对象属性
- 如何将数组项添加到对象属性中
- 设置嵌套对象属性的更好方法
- JavaScript管理具有重复属性名称的对象属性
- 如何使用element.myobj.prop等具有对象属性的元素
- 如何使用(this)访问Angular 2 http rxjs catch函数中的对象属性
- Es6:能够在设置/更新/删除对象属性时调用自定义方法
- 如何在AngularJS工厂中正确声明对象属性
- 如何使用object.assign()从其他对象引用基本对象属性
- 使用XPath样式访问Javascript JSON对象属性
- 将javascript对象(属性+值)合并到一个对象中
- 数组:使对象属性成为数组键
- 无法从JavaScript中的函数调用对象属性
- Google Closure Advanced |无法识别对象属性|动态属性
- Javascript从匿名函数访问外部对象属性
- 从函数更改对象属性
- 如何从字符串变量访问对象属性
- 从嵌套对象属性中获取排除某个值的最高值
- 在Aurelia computeds中,当设置依赖关系时,如何声明对对象属性的依赖关系
- 传递数量不确定的可能嵌套的对象属性