Javascript Date decorator для точного времени на стороне клиента - PullRequest
1 голос
/ 26 августа 2010

В настоящее время я работаю над некоторым Javascript для синхронизации часов на стороне клиента с нашими серверами. Я делаю это, просматривая заголовок «Date» всех ответов Ajax (он должен быть точным только в течение нескольких секунд).

Чтобы остальная часть кода работала без проблем с помощью этой функции Date, я хочу переопределить встроенную функцию Date в стиле декоратора, чтобы я мог просто улучшить ее с помощью вычисленного отклонения часов.

Пока у меня есть это (что, кажется, работает):

var SystemDate = Date;
var ServerDate = function() {
  var a = arguments;
  switch(a.length){
    case 0:
      var system_date = new SystemDate();
      return new SystemDate(system_date - ServerDate.skew);
    case 1:
      return new SystemDate(a[0]);
    case 7:
      return new SystemDate(a[0],a[1],a[2],a[3],a[4],a[5],a[6]);
  }
};
ServerDate.parse = Date.parse;
ServerDate.UTC   = Date.UTC;
ServerDate.skew  = 0;
var Date = ServerDate;

Теперь, когда я получаю изменение Ajax, я могу настроить свойство skew, и все новые экземпляры Date будут иметь скорректированное значение.

Я действительно вызываю критику. Есть несколько вещей, в которых я не уверен:

  • Это хорошая идея? - Я не программист Javascript, поэтому я не знаю, какие грехи я только что совершил
  • Как я могу обрабатывать различные длины аргументов более аккуратно - это выглядит очень смешно
  • Копирование методов класса UTC и синтаксического анализа кажется очень хрупким
  • Новая функция Date теперь возвращает объект даты на консоли, а не строковое представление.
...