JavaScript对象没有方法

时间:2012-03-14 14:29:10

标签: javascript casting

我正在开发一个非常使用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'”

我无法弄清楚为什么我会收到此错误。我显然有一些对象。但是,我预计这是一些打字问题。但是,我不明白为什么。有没有办法进行类型检查/演员表?

4 个答案:

答案 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);
    }
}