Benennen Sie die eingebaute Prototyp-Methode in Javascript um

8

Ich werde heute eine Frage gestellt, die mich überrascht hat. Ich weiß string.repeat(number) repeat string zu den genannten Zahlen in Javascript. Beispiel.

%Vor%

Sollte drucken

  

VaterVaterVater

Ich wurde gebeten, dasselbe zu tun, aber stattdessen .repeat zu verwenden, ich sollte meine neue Methode wie strRepeater so verwenden, dass.

%Vor%

Sollte gleich

sein %Vor%

Bitte wie mache ich das? Jede Hilfe wäre willkommen.

    
Nuru Salihu 26.10.2016, 01:44
quelle

3 Antworten

13

Es gibt 3 Optionen:

  1. Erstellen eines Alias ​​für den Prototyp:

    %Vor%
  2. Erstellen eines Wrappers um den Prototyp:

    %Vor%
  3. Erstellen Sie Ihre eigene Methode:

    %Vor%
nem035 26.10.2016, 01:50
quelle
6

Während die anderen Antworten, die dem Prototyp hinzugefügt werden, völlig korrekt sind, sind sie auch eine schlechte Angewohnheit, in sie hineinzukommen.

Wenn Sie etwas zu einem Prototyp hinzufügen, sollten Sie Object.defineProperty() verwenden, damit es nicht als Mitglied der Methode angezeigt wird (dh eine for...in Schleife zeigt Mitglieder an, aber nicht, wenn sie richtig hinzugefügt wurde).

Obwohl dies keine Voraussetzung für den String-Prototyp ist, ist es immer eine schlechte Idee, in schlechte Angewohnheiten zu kommen und sich dann zu fragen, warum die Dinge später nicht richtig funktionieren ...

Die Methode zum Hinzufügen der Methode ist also sicher:

%Vor%

Oder um noch sicherer zu sein:

%Vor%

Bei einer technischen Anmerkung wird dies mit den Standardeinstellungen enumerator: false , configurable: false und writeable: false festgelegt - was bedeutet: "Nein, Sie können mich nicht auflisten, löschen oder ändern". p>

Object.defineProperty auf MDN.

>     
Rycochet 26.10.2016 08:40
quelle
5

Versuchen Sie Folgendes:

%Vor%

Erklärungen:

  • String.prototype.strRepeater fügen Sie Ihre Funktion dem String-Objekt
  • hinzu
  • this.repeat(number) ruft die integrierte Wiederholfunktion mit Ihrer aktuellen Zeichenfolge in this mit der Nummer als Parameter
  • auf
  • return liefert das Ergebnis von .repeat() outside strRepeater()
antoni 26.10.2016 01:50
quelle

Tags und Links