Javascript 在日期原型中访问JSON常量

Javascript 在日期原型中访问JSON常量,javascript,json,date,prototype,Javascript,Json,Date,Prototype,我在data.prototype.DAYSASTEXT中设置了一些JSON数据,其结构与下面的结构类似 我想从用于扩展Date()方法的函数中访问它 代码如下:- Date.prototype.DAYSSASTEXT = { "hours": [ { "0": "Sunday" }, { "3": "Wednesday" } ] }; Date.prototype.getHourName = function() { // Edited return this.DAYSSA

我在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();
我哪里做错了?示例_date中设置的日期应返回3,表示星期三

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

'需要一个标识符,而看到的是“[”

您必须为成员访问使用其中一个,而不是同时使用两个:

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

如果你真的因为某种原因需要包装数组,你至少必须把
Sunday
Sunday
放在同一个对象上。

如果我不能更改JSON文件的结构,你有什么建议?忽略小时道具,因为我已经添加了小时道具,以使结构相同。为什么你不能更改它?它目前不可用。如果您无法更改代码文字,您至少必须添加将其转换为上述格式的代码。我可以更改JSON文件的结构,但不确定如何进行这是我使用JSON的第二天,所有配置都需要在一个文件中进行,例如,一周中的所有日子、作为文本的小时等,都需要在一个结构化文件中进行我可以加载并设置为Date方法的常量,以便在需要时使用。我将它们作为单独的对象使用,因为我认为我可以通过这种方式匹配0并返回Sunday。是的,但您必须循环结构以“匹配0”。构建它,以便您可以“通过0”直接访问它我想我已经破解了它。谢谢你,真的很感谢你的建议并指出了正确的方向!显示的代码中没有JSON数据。对象和数组文本不是JSON。结构是有效的JSON,我没有包含数据文件,因为它太长了。我要说的是,显示的结构根本不是JSON。JSON是一个字符串表示声明(其中字符串的内容与JS对象文本或数组文本的格式大致相同),并且必须按照
getHoursName()
函数使用它的方式进行解析以用作对象。(我只是反对应用于所示代码的术语。)公平地说,我欢迎大家纠正我的术语,我知道这不是我的强项:)