Pregunta

Estoy reemplazando (primordial, mejorar, añadir funcionalidad a) un método en el prototipo de la Date objeto. Aquí es una versión simplificada de lo que he hecho:

Date.prototype._toString = Date.prototype.toString;

Date.prototype.toString = function(mask) {
    if(mask == undefined){return this._toString();}
    //snip
    //...
    //snip
    return date_string;
}

Como no quiero perder el método estándar, estoy asignando el método original a una variable temporal y llamándolo en su caso.

¿Hay una manera de hacer esto sin contaminar el espacio de nombres Date.prototype?

Lo que estoy pidiendo es esta misma pregunta , sólo en Javascript.

¿Fue útil?

Solución

Puede hacerlo de esta manera: -

(function() {
    var _toString = Date.prototype.toString;
    Date.prototype.toString = function(mask) {
       if (mask == undefined) { return _toString.call(this); }
    //snip
    }
 })();

Otros consejos

Mientras que la solución anterior es más elegante es la manera en que no contamina el Date.prototype, las llamadas a la "nueva" toString será más lento debido al cierre que implica.

términos de velocidad, que va a estar mejor la forma en que usted ha mencionado en su pregunta. Pruebe un bucle que llama a su código de 20.000 veces y luego tratar el código presentado por Anthony.

En función de la frecuencia con su código se llama, tendrá que ir en una dirección u otra.

Saludos!

Actualización: se puede leer este pequeño de Google

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top