Eine Methode, um die Vorkommen eines Zeichens (einer Zeichenkette) in einem String zu zählen:
String.prototype.occurrences = function (character) { return this.match(new RegExp(character, 'g'))?.length || 0; };
Ist es eigentlich eine gute oder eine blöde Idee, Basisobjekte prototypisch zu erweitern? (Ernsthafte Frage.)
Ja. Nein. Vielleicht. Keine Ahnung.
Object ist selbstverständlich wegen der Vererbung tabu, String, Number, Array hingegen halte ich nicht wirklich für problemantisch. [1]
Es ist aber anzuraten, bezüglich eventueller zukünftiger JS-Erweiterungen eine Namenskonvention zu verwenden, die bei (in)offiziellen Benamungen nicht verwendet werden wird, z.B. ein/zwei führende Unterstriche String.prototype.__occurrences()
(oder irgendetwas anderes;
bspw. ein Prefix), um zu vermeiden, dass potentielle Funktionen durch Namens-Kollisionen überschrieben werden.
/K
Stur lächeln und winken, Männer!
Natürlich wird die prototypische Erweiterung auch da in speziellen Fällen versagen, z.B. wenn genau 99 Hexen in der Walpurgisnacht bei Vollmond gegen den Uhrzeigersinn auf ihren Besen pesen ↩︎