Javascript日期装饰器,用于准确的客户端时间

时间:2010-08-26 16:50:12

标签: javascript date decorator

我目前正在研究一些Javascript,以便将客户端时钟与我们的服务器同步。我这样做是通过查看任何Ajax响应的'Date'标题(它只需要准确到几秒钟)。

为了使其余的代码与这个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 respose时,我都可以调整skew属性,所有Date的新实例都会有调整后的值。

我真的在批评。有一些我不确定的事情:

  • 这是个好主意吗? - 我不是Javascript程序员所以我不知道我刚刚提交的是什么罪
  • 如何更整齐地处理不同的参数长度 - 看起来非常h​​acky
  • 复制类方法UTC和解析似乎非常脆弱
  • 新的Date函数现在在控制台上返回一个日期对象,而不是字符串表示。

0 个答案:

没有答案