我目前正在研究一些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的新实例都会有调整后的值。
我真的在批评。有一些我不确定的事情: