| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Seite listet Funktionen von JavaScript auf, die veraltet (d.h. noch verfgbar, aber zur Entfernung vorgesehen) und obsolet sind (d.h. nicht mehr verwendbar).
Diese veralteten Funktionen knnen noch verwendet werden, sollten jedoch mit Vorsicht genossen werden, da sie nicht von jedem JavaScript-Engine implementiert werden mssen. Sie sollten daran arbeiten, ihre Verwendung aus Ihrem Code zu entfernen.
Einige dieser veralteten Funktionen sind im Anhang B der ECMAScript-Spezifikation aufgefhrt. Dieser Abschnitt wird als normativ optional beschrieben das heit, Hosts von Webbrowsern mssen diese Funktionen implementieren, whrend Nicht-Web-Hosts dies mglicherweise nicht tun. Diese Funktionen sind wahrscheinlich stabil, da ihre Entfernung Rckwrtskompatibilittsprobleme verursachen und alte Websites beschdigen wrde. (JavaScript hat das Designziel "Das Web nicht zerstren".) Trotzdem sind sie nicht plattformbergreifend portabel und werden mglicherweise nicht von allen Analysetools untersttzt, daher wird Ihnen geraten, sie nicht zu verwenden, wie die Einfhrung von Anhang B besagt:
Alle in diesem Anhang spezifizierten Sprachfunktionen und Verhaltensweisen weisen eine oder mehrere unerwnschte Eigenschaften auf und wrden ohne die Existenz von Altnutzung aus dieser Spezifikation entfernt werden.
Programmierer sollten diese Funktionen und Verhaltensweisen nicht verwenden oder deren Existenz beim Schreiben von neuem ECMAScript-Code annehmen.
Einige andere, die im Hauptteil der Spezifikation stehen, sind ebenfalls als normativ optional gekennzeichnet und sollten nicht als gegeben vorausgesetzt werden.
JavaScript-Quellcode, sofern er als Skripte geparst wird, erlaubt HTML-hnliche Kommentare, als ob das Skript Teil eines <script>-Tags ist.
Das folgende ist gltiges JavaScript, wenn es in einem Webbrowser (oder Node.js, das die V8-Engine von Chrome verwendet) ausgefhrt wird:
<!-- comment
console.log("a"); <!-- another comment
console.log("b");
--> More comment
// Logs "a" and "b"
<!-- und --> wirken beide wie //, d.h. als Beginn von Zeilenkommentaren. --> ist nur am Beginn einer Zeile gltig (um Mehrdeutigkeiten mit einem nachfolgenden grer-als-Operator zu vermeiden), whrend <!-- berall in der Zeile vorkommen kann.
Die folgenden Eigenschaften sind veraltet. Dies beeinflusst nicht ihre Verwendung in Ersetzungs-Strings:
$1$9Klammerausdrcke, wenn vorhanden.
input, $_Der String, gegen den ein regulrer Ausdruck abgeglichen wird.
lastMatch, $&Der zuletzt gefundene Teilstring.
lastParen, $+Der letzte Klammerausdruck, falls vorhanden.
leftContext, $`Der Teilstring, der dem jngsten Match voransteht.
rightContext, $'Der Teilstring, der dem jngsten Match folgt.
Warnung: Vermeiden Sie die Verwendung dieser statischen Eigenschaften, da sie Probleme bei der Interaktion mit externem Code verursachen knnen!
Die Methode compile() ist veraltet. Konstruieren Sie stattdessen eine neue RegExp-Instanz.
Die folgenden Regex-Syntaxen sind veraltet und nur im Unicode-unaware Modus verfgbar. Im Unicode-bewussten Modus sind sie alle Syntaxfehler:
- zu einem literalen Zeichen.\cX, bei denen X eine Zahl oder _ ist, werden auf dieselbe Weise dekodiert wie bei ASCII-Buchstaben: \c0 ist dasselbe wie \cP, wenn es modulo 32 betrachtet wird. Auerdem wird, wenn ein \cX auftritt, bei dem X nicht zu den anerkannten Zeichen gehrt, der Backslash als literal angesehen.\k innerhalb eines Regex, das keine benannten Fngergruppen hat, wird als Identitts-Escape behandelt.], { und } knnen wrtlich ohne Escape erscheinen, wenn sie nicht als Ende von Zeichenklassen- oder Quantifizierungsbegrenzer interpretiert werden knnen.caller-Eigenschaft von Funktionen und die arguments.callee-Eigenschaft sind veraltet und im strengen Modus nicht verfgbar.arguments als Eigenschaft einer Funktion zuzugreifen, sollten Sie das arguments-Objekt innerhalb von Funktionsschlieungen verwenden.Object.prototype.__proto__-Zugriffsmethoden sind veraltet. Verwenden Sie stattdessen Object.getPrototypeOf und Object.setPrototypeOf. Dies gilt nicht fr den __proto__ literalen Schlssel in Objektdarstellungen.Object.prototype.__defineGetter__, Object.prototype.__defineSetter__, Object.prototype.__lookupGetter__ und Object.prototype.__lookupSetter__ sind veraltet. Verwenden Sie stattdessen Object.getOwnPropertyDescriptor und Object.defineProperty.String.prototype.fontsize und String.prototype.big.String.prototype.substr wird wahrscheinlich nicht bald entfernt, aber sie ist in Anhang B definiert und daher normativ optional.String.prototype.trimLeft und String.prototype.trimRight sollten durch String.prototype.trimStart und String.prototype.trimEnd ersetzt werden.getYear() und setYear() sind vom Jahr-2000-Problem betroffen und wurden durch getFullYear und setFullYear ersetzt.toGMTString() ist veraltet. Verwenden Sie stattdessen toUTCString().escape() und unescape() sind veraltet. Verwenden Sie encodeURI(), encodeURIComponent(), decodeURI() oder decodeURIComponent(), um Escape-Sequenzen fr Sonderzeichen zu kodieren und zu dekodieren.Die with-Anweisung ist veraltet und im strengen Modus nicht verfgbar.
Initialisierer in den var-Deklarationen von Schleifen-Headern for...in sind veraltet und erzeugen Syntaxfehler im strengen Modus. Der Initialisierungs-Ausdruck wird ausgewertet und der Variable zugewiesen, aber der Wert wrde bei der ersten Iteration der Schleife sofort erneut zugewiesen werden.
Normalerweise kann der catch-Block einer try...catch-Anweisung keine Variablendeklaration mit demselben Namen wie die an catch() gebundenen Variablen enthalten. Eine erweiterte Grammatik ermglicht es dem catch-Block, eine mit var deklarierte Variable mit demselben Namen wie der catch-gebundene Bezeichner zu enthalten, jedoch nur, wenn die catch-Bindung ein einfacher Bezeichner ist, kein Destrukturierungsmuster. Die Initialisierung und Zuweisung dieser Variablen wrde jedoch nur auf den catch-gebundenen Bezeichner wirken, anstelle der bergeordneten Variablen, was verwirrend sein knnte.
var a = 2;
try {
throw new Error();
} catch (a) {
var a = 1; // This 1 is assigned to the caught `a`, not the outer `a`.
}
console.log(a); // 2
try {
throw new Error();
// Note: identifier changed to `err` to avoid conflict with
// the inner declaration of `a`.
} catch (err) {
var a = 1; // This 1 is assigned to the upper-scope `a`.
}
console.log(a); // 1
Dies ist im Anhang B der Spezifikation aufgefhrt und daher mglicherweise nicht berall implementiert. Vermeiden Sie Namenskonflikte zwischen dem catch-gebundenen Bezeichner und Variablen, die im catch-Block deklariert sind.
Diese obsoleten Funktionen wurden vollstndig aus JavaScript entfernt und knnen nicht mehr in der angegebenen JavaScript-Version verwendet werden.
Die folgenden sind nun Eigenschaften von RegExp-Instanzen, nicht lnger des RegExp-Konstruktors:
| Eigenschaft | Beschreibung |
|---|---|
global |
Ob der regulre Ausdruck auf alle mglichen bereinstimmungen in einem String getestet wird oder nur auf die erste. |
ignoreCase |
Ob Gro- und Kleinschreibung bei einem Match in einem String ignoriert wird. |
lastIndex |
Der Index, bei dem das nchste Match startet. |
multiline (auch ber RegExp.$*) |
Ob in Strings ber mehrere Zeilen hinweg gesucht wird. |
source |
Der Text des Musters. |
Die valueOf()-Methode ist nicht mehr speziell fr RegExp. Sie verwendet Object.prototype.valueOf(), welche das Objekt selbst zurckgibt.
arity-Eigenschaft von Funktionen ist obsolet. Verwenden Sie stattdessen length.| Eigenschaft | Beschreibung | Alternative |
|---|---|---|
__count__ |
Gibt die Anzahl der aufzhlbaren Eigenschaften eines benutzerdefinierten Objekts zurck. | Object.keys() |
__parent__ |
Verweist auf den Kontext eines Objekts. | Kein direkter Ersatz |
__iterator__ |
Wird mit veralteten Iteratoren verwendet. | Symbol.iterator und die neuen Iteration-Standards |
__noSuchMethod__ |
Eine Methode, die aufgerufen wird, wenn eine nicht existente Eigenschaft als Methode aufgerufen wird. | Proxy |
Object.prototype.eval() |
Bewertet einen String mit JavaScript-Code im Kontext des spezifizierten Objekts. | Kein direkter Ersatz |
Object.observe() |
Asynchrones Beobachten von nderungen an einem Objekt. | Proxy |
Object.unobserve() |
Entfernt Beobachter. | Proxy |
Object.getNotifier() |
Erstellt ein Benachrichtigungsobjekt, das ermglicht, eine nderungsbenachrichtigung mit Object.observe() synthetisch auszulsen. |
Kein direkter Ersatz |
Object.prototype.watch() |
Fgt eine Handler-Funktion an eine Eigenschaft an, die aufgerufen wird, wenn der Eigenschaft ein Wert zugewiesen wird. | Proxy |
Object.prototype.unwatch() |
Entfernt berwachungs-Handler von einer Eigenschaft. | Proxy |
String.slice(myStr, 0, 12), String.replace(myStr, /\./g, "!"), usw. wurden in Firefox 1.5 (JavaScript 1.6) eingefhrt, in Firefox 53 als veraltet markiert und in Firefox 68 entfernt. Sie knnen Methoden auf String.prototype zusammen mit Function.call verwenden.String.prototype.quote wurde in Firefox 37 entfernt.flags-Parameter in String.prototype.search, String.prototype.match, und String.prototype.replace sind obsolet.WeakMap.prototype.clear() wurde in Firefox 20 hinzugefgt und in Firefox 46 entfernt. Es ist nicht mglich, alle Schlssel in einer WeakMap zu durchlaufen.Date.prototype.toLocaleFormat(), welches ein Format-String verwendete, der im gleichen Format wie die strftime()-Funktion in C erwartet wurde, ist obsolet. Verwenden Sie toLocaleString() oder Intl.DateTimeFormat.Array.slice(myArr, 0, 12), Array.forEach(myArr, myFn), usw. wurden in Firefox 1.5 (JavaScript 1.6) eingefhrt, in Firefox 68 als veraltet markiert und in Firefox 71 entfernt. Sie knnen Methoden auf Array.prototype zusammen mit Function.call verwenden.| Eigenschaft | Beschreibung | Alternative |
|---|---|---|
Array.observe() |
Asynchrones Beobachten von nderungen an Arrays. | Proxy |
Array.unobserve() |
Entfernt Beobachter. | Proxy |
Number.toInteger() ist obsolet. Verwenden Sie Math.floor, Math.round oder andere Methoden.Proxy.create und Proxy.createFunction sind obsolet. Verwenden Sie den Proxy()-Konstruktor.hasOwn (bug 980565, Firefox 33).getEnumerablePropertyKeys (bug 783829, Firefox 37)getOwnPropertyNames (bug 1007334, Firefox 33)keys (bug 1007334, Firefox 33)ParallelArray ist obsolet.for each...in ist obsolet. Verwenden Sie for...of stattdessen.function () 1 als Abkrzung fr function () { return 1; }) sind obsolet. Verwenden Sie regulre functions oder arrow functions stattdessen.Die toSource()-Methoden von Arrays, Zahlen, Strings usw. und die uneval()-globale Funktion sind obsolet. Verwenden Sie toString() oder schreiben Sie Ihre eigene Serialisierungsmethode.
Legacy-Generator-Funktionsanweisungen und -Ausdrcke wurden entfernt. Die Syntax der alten Generatorfunktionen nutzt das function-Schlsselwort, welches automatisch zu einer Generatorfunktion wird, wenn es ein oder mehrere yield-Ausdrcke im Krper gibt dies ist jetzt ein Syntaxfehler. Verwenden Sie function*-Anweisungen und function*-Ausdrcke stattdessen.
Array-Komprehensionen und Generator-Komprehensionen sind entfernt.
// Legacy array comprehensions
[for (x of iterable) x]
[for (x of iterable) if (condition) x]
[for (x of iterable) for (y of iterable) x + y]
// Legacy generator comprehensions
(for (x of iterable) x)
(for (x of iterable) if (condition) x)
(for (x of iterable) for (y of iterable) x + y)
Firefox, vor Version 26, implementierte ein weiteres Iterato-Protokoll, das dem Standard Iterator-Protokoll hnlich ist. Ein Objekt ist ein veralteter Iterator, wenn es eine next()-Methode implementiert, die bei jedem Aufruf einen Wert erzeugt und am Ende der Iteration ein StopIteration-Objekt auslst. Dieses veraltete Iterator-Protokoll unterscheidet sich vom Standard-Iterator-Protokoll:
next() zurckgegeben, anstatt der value-Eigenschaft des IteratorResult-Objekts.StopIteration-Objekts ausgedrckt, anstelle durch die done-Eigenschaft des IteratorResult-Objekts.Diese Funktion wurde zusammen mit dem StopIteration-globale Konstruktor in Firefox 58+ entfernt. Fr zukunftsgerichtete Verwendungen erwgen Sie, for...of-Schleifen und das Iterator-Protokoll zu verwenden.
Sharp-Variablen sind obsolet. Um zirkulre Strukturen zu erstellen, verwenden Sie stattdessen temporre Variablen.
Der Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |