我需要帮助理解为什么以下代码返回 undefined object 属性:
var count = 0;
var intervals = {
collection : []
}
intervals.collection[0] = function () {
this.timer = setInterval(function(){
count++;
$("p").html(count);
}, 1000);
}();
if(typeof intervals.collection[0] === "undefined") {
$("span").html("undefined");
}
工作示例:http://jsfiddle.net/tvaQk/8/
基本上,我希望能够保留一个 setIntervals 集合,以便稍后引用,以便我可以循环和清除。我想我可以循环遍历 Intervals.collection 数组并执行类似的操作:
clearInterval(intervals.collection[0].timer)
但不能,因为 intervals.collection[0]
未定义
最佳答案
您忘记了返回
。
intervals.collection[0] = function () {
return this.timer = setInterval(function(){
--^^^^^^--
注意this
指的是window
,我不确定是否向window
添加属性timer
元素实际上是您所期望的。否则,您应返回间隔 ID,以免扰乱全局 window
范围。
使用 intervals.collection[0].timer
访问 timer
的一个简短方法是创建一个对象:
intervals.collection.push({
timer: setInterval(function(){
count++;
$("p").html(count);
}, 1000)
});
console.log(intervals.collection[0].timer);
在此示例中,我使用了 Array.push 来将新创建的间隔添加为数组的最后一个元素。
关于javascript - 需要帮助理解为什么 javascript 对象属性未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13828733/