Domanda

sto sostituendo (predominante, il miglioramento, l'aggiunta di funzionalità a) un metodo nel prototipo del Date dell'oggetto. Ecco una versione semplificata di quello che ho fatto:

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

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

Come io non voglio perdere il metodo standard, sto assegnando il metodo originale per una variabile temporale e chiamandolo se del caso.

C'è un modo di fare questo senza inquinare l'Date.prototype namespace?

Quello che sto chiedendo è questa stessa domanda , solo in Javascript.

È stato utile?

Soluzione

Si può fare in questo modo: -

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

Altri suggerimenti

Mentre la soluzione di cui sopra è più elegante è il modo che non inquina l'Date.prototype, invita al "nuovo" toString sarà rallentata a causa della chiusura che comporta.

termini di velocità, sarete meglio il modo in cui lei ha citato nella sua interrogazione. Prova un ciclo che chiama il codice di 20.000 volte e quindi provare il codice presentata da Anthony.

A seconda di come spesso il codice viene chiamato, ti consigliamo di andare in un modo o l'altro.

Cheers!

Aggiornamento: è possibile leggere questa piccola da Google

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top