我在 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天),它会返回未定义的
答案 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()];
如果由于某种原因确实需要包装数组,那么至少必须将Sunday
和Wednesday
放在同一个对象上。