У объекта JavaScript нет метода - PullRequest
2 голосов
/ 14 марта 2012

Я работаю над приложением, которое очень сильно использует JavaScript.Я сериализую объекты JSON по страницам, и мне интересно, вызывает ли это проблемы.Если мы игнорируем серизацию, мой код в основном выглядит следующим образом:

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 ]

4 голосов
/ 14 марта 2012

Попробуйте изменить это:

this.data = {
    currentDateTime = new Date(ud);
}

на это:

this.data = {
    currentDateTime: new Date(ud)
}

Внутри литерала объекта необходимо использовать : для сопоставления ключей со значениями.

2 голосов
/ 14 марта 2012
this.data = {
  currentDateTime = new Date(ud);
}

должно быть:

this.data = {
  currentDateTime: new Date(ud)
}
1 голос
/ 14 марта 2012

У вас есть синтаксическая ошибка в вашем this.data определении ...

вместо

currentDateTime = new Date(ud);

сделай это ...

currentDateTime : new Date(ud)

В противном случае ваш код скопирован в jsfiddle работает

0 голосов
/ 14 марта 2012

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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...