Signatur
Beschreibung
Die Methode italics() gehört zu den sogenannten HTML-Wrapper-Methoden von String. Sie hängt vor und nach dem Ausgangsstring die Tags <i> und </i> an und gibt das Ergebnis als neuen String zurück. Der ursprüngliche String bleibt unverändert, da Strings in JavaScript unveränderlich sind.
Die Methode erzeugt nur Text. Es wird kein DOM-Element angelegt, und der Inhalt wird nicht escaped. Kursiv dargestellt wird das Ergebnis erst, wenn man es als HTML interpretieren lässt, etwa über innerHTML.
italics() ist im ECMAScript-Standard nur im Anhang B („Legacy-Features für Webbrowser“) festgeschrieben und gilt als veraltet. Für neuen Code sollte man Elemente mit document.createElement('i') oder 'em' erzeugen und über textContent befüllen. Die Formatierung selbst gehört idealerweise in CSS (font-style: italic).
Rückgabewert
<i>str</i>. Dabei steht str für den unveränderten Ausgangsstring.Beispiele
Grundlegende Verwendung
const titel = 'Der Zauberberg';
const html = titel.italics();
console.log(html);
console.log(titel); // Original bleibt unverändert
Fehlendes Escaping: Sonderzeichen bleiben roh
const eingabe = 'A & B <b>fett</b>';
console.log(eingabe.italics());
Moderne, sichere Alternative mit dem DOM
const buchtitel = 'Die Blechtrommel';
// Veraltet und anfällig für XSS:
// container.innerHTML = buchtitel.italics();
// Empfohlen: Element erzeugen, Text sicher setzen
const i = document.createElement('i');
i.textContent = buchtitel;
document.body.append('Lieblingsbuch: ', i);
console.log(i.outerHTML);
Aufruf mit this, das kein String ist
console.log(String.prototype.italics.call(42));
try {
String.prototype.italics.call(null);
} catch (e) {
console.log(e.constructor.name);
}
// Wichtig · Fallstricke
- Veraltet: Die Methode steht nur in Annex B der ECMAScript-Spezifikation. Alle Browser und Node.js unterstützen sie weiterhin, in neuem Code sollte man sie aber nicht verwenden. Linter wie ESLint mit Regeln wie
unicorn/no-deprecatedund TypeScript-Hinweise markieren sie teilweise als veraltet. - XSS-Gefahr: Der Inhalt wird nicht escaped. Übergibt man das Ergebnis mit Nutzereingaben an
innerHTML,insertAdjacentHTMLoderdocument.write, kann eingeschleustes HTML oder Skriptcode ausgeführt werden. Nutze stattdessentextContentoder bereinige die Eingabe vorher, etwa mit DOMPurify. Wenn möglich, sichere zusätzlich mit einer Content Security Policy und Trusted Types ab. - Semantik:
<i>bedeutet in HTML5 einen „abweichenden Tonfall“, etwa Fachbegriffe oder Werktitel. Für echte Betonung ist<em>das passende Element, für reine Optik CSS. - Wird die Methode mit
nulloderundefinedalsthisaufgerufen, wirft sie einenTypeError. Andere Werte werden vorher in einen String umgewandelt.