Mathematik/Programmiertechnik zum Wochenende – Lösung
bearbeitet von
> Eine Methode, um die Vorkommen eines Zeichens (einer Zeichenkette) in einem String zu zählen:
>
> ```js
> 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()`{: .language-js} (oder irgendetwas anderes), um zu vermeiden, dass potentielle Funktionen durch Namens-Kollisionen überschrieben werden.
/K
[^1]: 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
--
Stur lächeln und winken, Männer!