javascript - 需要帮助理解为什么 javascript 对象属性未定义

标签 javascript jquery

我需要帮助理解为什么以下代码返回 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/

相关文章:

javascript - nuxt 身份验证 : Google provider return invalid_request

javascript - 如何使 AngularJS 在 View 之间切换并显示更新列表

javascript - 单击它时在 div 上设置一个框阴影

javascript - 将 CanvasRenderingContext2D 的现有引用应用于元素

jQuery 一次仅关闭和打开一个元素

jquery - 使用 MySQL 数据库中的数据通过 Flask 和 jQuery 填充下拉列表

javascript - 路由器事件在页面刷新时无法实现某些功能

jquery - 当图像具有焦点时如何显示 iPhone 键盘?

php - 如何使用jquery将数据发送到另一台服务器

javascript - 在ngFor中获取当前运行的元素