我正在开发一个非常使用JavaScript的应用程序。我正在跨页面序列化JSON对象,我想知道这是否会导致问题。如果我们忽略了serization,我的代码基本上是这样的:
function MyClass() { this.init(); }
MyClass.prototype = {
init: function () {
var cd = new Date();
var ud = Date.UTC(cd.getYear(), cd.getMonth(), cd.getDate(), cd.getHours(), cd.getMinutes(), cd.getSeconds(), cd.getMilliseconds());
this.data = {
currentDateTime = new Date(ud);
}
}
}
try {
var myClassInstance = new MyClass();
alert(myClassInstance.data.currentDateTime.getFullYear());
} catch (e1) {
console.log(e1);
}
当我执行“警报”时,我收到一条错误消息:
“对象0112-03-14T10:20:03.206Z没有方法'getFullYear'”
我无法弄清楚为什么我会收到此错误。我显然有一些对象。但是,我预计这是一些打字问题。但是,我不明白为什么。有没有办法进行类型检查/演员表?
答案 0 :(得分:4)
尝试更改此内容:
this.data = {
currentDateTime = new Date(ud);
}
到此:
this.data = {
currentDateTime: new Date(ud)
}
在对象文字中,您需要使用:
将键映射到值。
答案 1 :(得分:2)
this.data = {
currentDateTime = new Date(ud);
}
应该是:
this.data = {
currentDateTime: new Date(ud)
}
答案 2 :(得分:1)
this.data
定义中存在语法错误...
而不是
currentDateTime = new Date(ud);
制作它......
currentDateTime : new Date(ud)
否则,您的代码会复制到jsfiddle works
答案 3 :(得分:0)
currentDateTime = new Date(ud);
应为currentDateTime : new Date(ud);
this.data = {
// Initialize as a property
currentDateTime : new Date(ud)
}
与以下内容相同:
this.data = {
currentDateTime: function() {
return new Date(ud);
}
}