在日期原型中访问JSON常量

时间:2013-08-18 10:32:45

标签: javascript json date prototype

我在 Data.prototype.DAYSASTEXT

中的结构类似于下面的结构中设置了一些JSON数据

我想从我用来扩展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天),它会返回未定义的

1 个答案:

答案 0 :(得分:1)

  

'Expected an identifier and instead saw "["

您必须使用dot or bracket notation作为会员控制权,而不是两者:

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()];

如果由于某种原因确实需要包装数组,那么至少必须将SundayWednesday放在同一个对象上。