0

我有一些 JSON 数据设置,其结构类似于Data.prototype.DAYSASTEXT中的以下结构

我想从我用来扩展Date()方法的函数内部访问它。

这是代码: -

Date.prototype.DAYSSASTEXT = { "hours": [
  { "0": "Sunday" },
  { "3": "Wednesday" }
  ]
};

Date.prototype.getHourName = function() {
  // Edited
  return this.DAYSSASTEXT.hours[0][this.getDay()];
};


var example_date = new Date(2008, 1, 20);

document.getElementById("debug").innerHTML = example_date.getHourName();

我哪里错了?在 example_date 中设置的日期应该在星期三返回 3。

编辑:如果我将日期更改为星期天,它会返回正确的值,但对于星期三(从 0 开始的第 3 天),它会返回 undefined

4

1 回答 1

1

'Expected an identifier and instead saw "["

您必须使用点或括号表示法进行成员访问,而不是同时使用:

this.DAYSSASTEXT.hours[0][this.getDay()];
//                       ^ no dot!

除此之外,您的结构似乎是错误的。不仅属性中有工作日名称hours,而且数组中也有一个属性对象。我建议使用一个大对象,甚至使该对象成为一个数组:

Date.prototype.DAYSSASTEXT = {
    "hours": {
        "0": "Sunday",
        "3": "Wednesday"
    }
};
// or
Date.prototype.DAYSSASTEXT = {
   "hours": ["Sunday", , , "Wednesday"]
};

然后在没有数组索引的情况下访问它0

this.DAYSSASTEXT.hours[this.getDay()];

如果您出于某种原因确实需要该包装数组,则至少必须将SundayandWednesday放在同一个对象上。

于 2013-08-18T10:46:26.180 回答