Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何缓存JavaScript日期对象?_Javascript_Jquery_Datejs - Fatal编程技术网

如何缓存JavaScript日期对象?

如何缓存JavaScript日期对象?,javascript,jquery,datejs,Javascript,Jquery,Datejs,我在我的web应用程序中使用支持多种文化。这里的问题是date.js有这样的代码 Date.prototype._toString = Date.prototype.toString; Date.prototype.toString = function () { //doing something return this._toString(); } 当我使用另一个区域性文件时,它也包含此定义。从逻辑上说,我的医生有这个 //date.js D

我在我的web应用程序中使用支持多种文化。这里的问题是date.js有这样的代码

  Date.prototype._toString = Date.prototype.toString;
  Date.prototype.toString = function () {
    //doing something
        return this._toString();
   }
当我使用另一个区域性文件时,它也包含此定义。从逻辑上说,我的医生有这个

//date.js
     Date.prototype._toString = Date.prototype.toString;
     Date.prototype.toString = function () {
     //doing something
         return this._toString();
     }
     //date-fr-FR.js
     Date.prototype._toString = Date.prototype.toString;
     Date.prototype.toString = function () {
         //doing something
         return this._toString();
     }
我在我的web应用程序中同时引用了date.js和date-fr-fr.js

问题是当我使用toString函数
var d=new Date().toString()时
由于递归调用,它会将
抛出堆栈空间
msg。是否有任何方法可以缓存
原始日期对象并将其放回原处,因为我不想从doc中删除Date.js

您应该只复制函数一次:

Date.prototype._toString = Date.prototype.toString;
第二次执行此操作时,它将再次复制本机toString函数,然后通过递归循环调用自己

我不知道您是否不止一次这样做,但是在文件中没有定义其他toString方法,所以我猜您是手动添加它的

更新

如果两次包含date.js core(不应该这样做,只包含区域设置),您可能会首先检查函数是否存在:

if ( typeof Date.prototype._toString != 'function' ) {
    // include date.js
}

您不需要同时包含
date.js
date-fr-fr.js
,只需要包含
fr-fr.js
文件即可更改区域性,您可以在Datejs-all-Alpha1.zip文件的src/globalization文件夹中找到该文件。fr-fr.js文件只包含特定于区域性的数据,它应该覆盖date.js中已经包含的数据,而不必重新定义功能。

您所要做的就是检查
\u toString
是否已定义

Date.prototype._toString = Date.prototype._toString || Date.prototype.toString;
Date.prototype.toString = function() {
    //doing something      
    return this._toString();
}

我对此无能为力,因为它在Date.js库中。Date.js核心文件只执行一次,但在您的示例中,您执行了两次,对吗?我需要的是首先捕获日期值,在添加第二个Date.js之前,我必须停止日期,以便第二个js使用原始js Date对象。你是说包含Date.js核心两次,第二次不起作用吗?是的,我使用两个具有不同文化的data.js。一个是我在head标签中提到的,另一个是根据用户选择附加到文档中的。