Frage

Ich bin zu ersetzen (überwiegend, die Verbesserung, Hinzufügen von Funktionen zu) ein Verfahren, bei dem Prototyp des Date Objekts. Hier ist eine vereinfachte Version von dem, was ich getan habe:

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

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

Wie will ich nicht die Standard-Methode verlieren, ich bin die ursprüngliche Methode zu einer zeitlichen Variablen zugewiesen und es gegebenenfalls aufrufen.

Gibt es eine Möglichkeit, dies zu tun, ohne die Date.prototype Namespace verschmutzen?

Was ich frage ist diese gleiche Frage , nur in Javascript.

War es hilfreich?

Lösung

Sie können es tun, wie folgt: -

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

Andere Tipps

Während die obige Lösung eleganter ist, ist die Art und Weise, dass es nicht die Date.prototype nicht verschmutzt, ruft das „neue“ toString wird verlangsamt werden wegen der Schließung geht es.

Es Bezug auf Geschwindigkeit, werden Sie von der Art und Weise besser sein, das Sie in Ihrer Frage erwähnt. Versuchen Sie, eine Schleife, die Ihren Code 20.000 Mal aufruft und dann versuchen, den Code eingereicht von Anthony.

Je nachdem, wie oft Ihr Code aufgerufen wird, wollen Sie die eine oder die andere gehen.

Cheers!

Update: Sie können dieses kleine Probe von Google rel="nofollow

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top