Start · Sprachen · JavaScript · Referenz · String.prototype.bold()

String.prototype.bold()

Methode

Gibt einen neuen String zurück, der den Ausgangsstring in ein <code>&lt;b&gt;</code>-Element einbettet, z. B. <code>"&lt;b&gt;Text&lt;/b&gt;"</code>. Veraltet.

seit JavaScript ES2015 (Annex B, veraltet) – Baseline: alle Browse deprecated seit ja Kategorie: method-property

Signatur

String.prototype.bold()

Beschreibung

Die Methode bold() gehört zu den sogenannten HTML-Wrapper-Methoden von String. Sie erzeugt einen neuen String, in dem der ursprüngliche Text von <b> und </b> umschlossen ist. Der Ausgangsstring selbst wird dabei nicht verändert.

Die Methode stammt aus der Anfangszeit von JavaScript und wurde in ES2015 nur aus Kompatibilitätsgründen im Anhang B (Annex B) der Spezifikation festgeschrieben. Sie gilt als veraltet und sollte in neuem Code nicht mehr verwendet werden. Sie ist vor allem dann relevant, wenn man alten Code pflegt oder versteht.

Heute erzeugt man fetten Text besser über DOM-Methoden wie document.createElement("b") oder "strong" zusammen mit textContent, über Template-Literale in einer abgesicherten Rendering-Schicht oder rein über CSS (font-weight: bold). Für semantisch wichtige Hervorhebungen ist <strong> meist die bessere Wahl als <b>.

Rückgabewert

Typ
string
Beschreibung
Ein neuer String der Form <b>str</b>, wobei str der ursprüngliche String ist. Der Inhalt wird nicht HTML-maskiert.

Beispiele

Grundlegende Verwendung

const text = "Wichtiger Hinweis";
const fett = text.bold();

console.log(fett);
console.log(text); // Original bleibt unverändert
<b>Wichtiger Hinweis</b> Wichtiger Hinweis

Fehlende Maskierung – Achtung XSS

const eingabe = '<img src=x onerror="alert(1)">';

// bold() maskiert nichts – der gefährliche Inhalt bleibt erhalten
console.log(eingabe.bold());
<b><img src=x onerror="alert(1)"></b>

Moderne, sichere Alternative per DOM

const zeigeFett = (container, text) => {
  const b = document.createElement("strong");
  b.textContent = text; // wird automatisch als reiner Text behandelt
  container.append(b);
};

zeigeFett(document.body, "Bestellung erfolgreich");
console.log(document.body.lastElementChild.outerHTML);
<strong>Bestellung erfolgreich</strong>

Ersatz für bold() in Legacy-Code mit Maskierung

const escapeHtml = (s) =>
  s.replace(/[&<>"']/g, (c) => ({
    "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;"
  })[c]);

const fett = (s) => `<b>${escapeHtml(s)}</b>`;

console.log(fett("Preis < 10 €"));
<b>Preis &lt; 10 €</b>

// Wichtig · Fallstricke

  • Veraltet: bold() steht nur in Annex B der ECMAScript-Spezifikation. Zwar unterstützen alle Browser und Node.js die Methode, neue Projekte sollten sie aber nicht verwenden. Linter wie ESLint (z. B. über Plugins wie eslint-plugin-unicorn) können sie melden.
  • Sicherheit (XSS): Der Inhalt wird nicht maskiert. Wer das Ergebnis mit Nutzereingaben über innerHTML, insertAdjacentHTML oder document.write einfügt, öffnet eine Lücke für Cross-Site-Scripting. Verwenden Sie stattdessen textContent oder maskieren Sie selbst. Eine strenge Content Security Policy (CSP) und Trusted Types verringern das Risiko zusätzlich.
  • Die Methode liefert nur einen String und erzeugt kein DOM-Element. Die Formatierung wird erst sichtbar, wenn der String als HTML ausgewertet wird.
  • <b> ist rein visuell. Für semantische Betonung (z. B. für Screenreader) ist <strong> besser geeignet.
  • In TypeScript ist die Methode als @deprecated gekennzeichnet.