Comment mettre en cache l’object JavaScript Date?

J’utilise Date.js pour prendre en charge de nombreuses cultures dans mon application Web. Le problème ici est que date.js a un code comme celui-ci.

Date.prototype._toSsortingng = Date.prototype.toSsortingng; Date.prototype.toSsortingng = function () { //doing something return this._toSsortingng(); } 

lorsque j’utilise un autre fichier de culture, il contient également cette définition. si logiquement ma doc a cette

 //date.js Date.prototype._toSsortingng = Date.prototype.toSsortingng; Date.prototype.toSsortingng = function () { //doing something return this._toSsortingng(); } //date-fr-FR.js Date.prototype._toSsortingng = Date.prototype.toSsortingng; Date.prototype.toSsortingng = function () { //doing something return this._toSsortingng(); } 

Je fais référence à la fois à date.js et à date-fr-FR.js dans mon application Web.

Le problème est lorsque j’utilise la fonction toSsortingng var d = new Date().toSsortingng(); il jette un msg d’ Out of stack space , à cause des appels récursifs. Existe-t-il un moyen de mettre en cache l’object Date d’origine et de le reposer, car je ne souhaite pas supprimer date.js de la documentation

Au lieu d’inclure les date.js et date-fr-FR.js , il vous suffit d’inclure le fichier fr-FR.js pour modifier la culture, que vous trouverez dans le dossier src / globalisation du fichier Datejs-all-Alpha1. .fichier zip. Le fichier fr-FR.js contient uniquement les données spécifiques à la culture. Il doit remplacer ce qui est déjà inclus dans date.js, sans redéfinir les fonctionnalités.

Tout ce que vous avez à faire est de vérifier si _toSsortingng a été défini ou non.

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

Vous ne devez copier la fonction qu’une seule fois:

 Date.prototype._toSsortingng = Date.prototype.toSsortingng; 

La deuxième fois, vous copiez à nouveau la fonction native toSsortingng, qui s’appellera ensuite via une boucle récursive.

Je ne sais pas si vous le faites réellement plus d’une fois, mais dans le fichier fr-FR.js , il n’y a pas d’autre méthode toSsortingng définie, donc je suppose que vous l’ajoutez manuellement.

Mettre à jour

Si vous incluez le kernel date.js deux fois (vous ne devriez pas inclure uniquement les parameters régionaux), vous pouvez probablement vérifier si la fonction est présente en premier:

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