| [ 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 JavaScript-Funktionen auf, die als veraltet (d.h. noch verfgbar, aber fr die Entfernung geplant) und obsolet (d.h. nicht mehr nutzbar) gelten.
Diese veralteten Funktionen knnen noch verwendet werden, sollten jedoch mit Vorsicht verwendet werden, da sie nicht in allen JavaScript-Engines implementiert sein mssen. Sie sollten daran arbeiten, deren Verwendung aus Ihrem Code zu entfernen.
Einige dieser veralteten Funktionen sind im Abschnitt Anhang B der ECMAScript-Spezifikation aufgefhrt. Dieser Abschnitt wird als normativ optional beschrieben das heit, Webbrowser-Hosts mssen diese Funktionen implementieren, whrend Nicht-Web-Hosts dies mglicherweise nicht tun. Diese Funktionen sind wahrscheinlich stabil, da deren Entfernung Rckwrtskompatibilittsprobleme verursachen und ltere Websites beeintrchtigen wrde. (JavaScript hat das Designziel "das Web nicht kaputt machen".) Dennoch sind sie nicht plattformbergreifend tragbar und werden mglicherweise nicht von allen Analysetools untersttzt, daher wird geraten, sie nicht zu verwenden, wie die Einfhrung von Anhang B bemerkt:
Alle in diesem Anhang spezifizierten Sprachmerkmale und Verhaltensweisen weisen eine oder mehrere unerwnschte Eigenschaften auf und wrden ohne die Existenz von Altnutzungen aus dieser Spezifikation entfernt werden.
Programmierer sollten diese Merkmale und Verhaltensweisen beim Schreiben neuen ECMAScript-Codes nicht verwenden oder deren Existenz voraussetzen.
Einige andere, obwohl sie sich im Hauptteil der Spezifikation befinden, sind ebenfalls als normativ optional gekennzeichnet und sollten nicht als gegeben vorausgesetzt werden.
JavaScript-Quellcode, wenn er als Skripte geparst wird, erlaubt HTML-hnliche Kommentare, als ob das Skript Teil eines <script> Tags wre.
Folgendes ist gltiges JavaScript, wenn es in einem Webbrowser (oder Node.js, das die V8-Engine von Chrome nutzt) ausgefhrt wird:
<!-- comment
console.log("a"); <!-- another comment
console.log("b");
--> More comment
// Logs "a" and "b"
<!-- und --> verhalten sich beide wie //, d.h. sie starten Zeilenkommentare. --> ist nur am Anfang einer Zeile gltig (um Verwirrung mit einem Postfix-Abzugsoperator gefolgt von einem Grer-als-Operator zu vermeiden), whrend <!-- berall in der Zeile vorkommen kann.
Die folgenden Eigenschaften sind veraltet. Dies beeinflusst nicht ihre Verwendung in Ersatz-Strings:
$1$9Eingeschlossene Substring-bereinstimmungen, falls vorhanden.
input, $_Der String, gegen den ein regulrer Ausdruck abgeglichen wird.
lastMatch, $&Der zuletzt abgeglichene Substring.
lastParen, $+Die zuletzt eingeschlossene Substring-bereinstimmung, falls vorhanden.
leftContext, $`Der Substring, der der letzten bereinstimmung vorausgeht.
rightContext, $'Der Substring, der der letzten bereinstimmung folgt.
Warnung: Vermeiden Sie die Verwendung dieser statischen Eigenschaften, da sie Probleme im Umgang mit externem Code verursachen knnen!
Die Methode compile() ist veraltet. Erstellen Sie stattdessen eine neue RegExp-Instanz.
Die folgenden Regex-Syntaxen sind veraltet und nur im Unicode-unaware Modus verfgbar. Im Unicode-aware Modus sind sie alle Syntaxfehler:
- zu einem literalen Zeichen.\cX, wobei X eine Zahl oder _ ist, werden auf die gleiche Weise decodiert wie diejenigen mit ASCII-Buchstaben: \c0 ist genauso wie \cP, wenn mod 32 genommen wird. Auerdem, wenn die Form \cX irgendwo auftritt, wo X nicht eines der erkannten Zeichen ist, wird der Backslash als ein literales Zeichen behandelt.\k innerhalb eines Regexes, der keine benannten Erfassungsgruppen hat, wird als ein Identitts-Escape betrachtet.], {, und } knnen literal unescaped erscheinen, wenn sie nicht als Ende einer Zeichenklasse oder als Quantifizierer-Delimitatoren interpretiert werden knnen.caller-Eigenschaft von Funktionen und die arguments.callee-Eigenschaft sind veraltet und in strengem Modus nicht verfgbar.arguments als Eigenschaft einer Funktion sollten Sie das arguments-Objekt innerhalb von Funktionsabschlssen verwenden.Object.prototype.__proto__-Zugriffsmethoden sind veraltet. Verwenden Sie stattdessen Object.getPrototypeOf und Object.setPrototypeOf. Dies gilt nicht fr den __proto__ literal key in Objektliteralen.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 in absehbarer Zeit entfernt, aber es 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 var-Deklarationen von for...in-Schleifen sind veraltet und erzeugen Syntaxfehler im strengen Modus. Die Initialisiererausdrcke werden ausgewertet und der Variablen zugeordnet, aber der Wert wrde bei der ersten Schleifeniteration sofort neu zugeordnet werden.
Normalerweise kann der catch-Block einer try...catch-Anweisung keine Variablendeklaration mit dem gleichen Namen enthalten wie die im catch() gebundenen Variablen. Eine erweiterte Grammatik erlaubt es dem catch-Block, eine mit var deklarierte Variable mit dem gleichen Namen wie der im catch gebundene Bezeichner zu enthalten, aber nur, wenn die catch-Bindung ein einfacher Bezeichner ist und kein Destructuring-Muster. Diese Variable wird jedoch nur auf den im catch gebundenen Bezeichner initialisiert und zugewiesen, anstatt auf die oberste Gltigkeitsbereichsvariable, und das Verhalten knnte verwirrend sein.
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 im catch gebundenen Bezeichner und Variablen, die im catch-Block deklariert sind.
Diese obsoleten Funktionen wurden vollstndig aus JavaScript entfernt und knnen ab der angegebenen Version von JavaScript nicht mehr verwendet werden.
Die folgenden sind jetzt Eigenschaften von RegExp-Instanzen, nicht mehr des RegExp-Konstruktors:
| Eigenschaft | Beschreibung |
|---|---|
global |
Ob der regulre Ausdruck gegen alle mglichen bereinstimmungen in einem String getestet wird oder nur gegen die erste. |
ignoreCase |
Ob beim Versuch einer bereinstimmung in einem String die Gro-/Kleinschreibung ignoriert wird. |
lastIndex |
Der Index, bei dem mit dem nchsten Abgleich begonnen werden soll. |
multiline (auch ber RegExp.$*) |
Ob in String-bereinstimmungen ber mehrere Zeilen hinweg gesucht werden soll. |
source |
Der Text des Musters. |
Die Methode valueOf() ist nicht mehr speziell fr RegExp. Sie nutzt Object.prototype.valueOf(), das sich selbst zurckgibt.
arity-Eigenschaft von Funktionen ist obsolet. Verwenden Sie stattdessen length.| Eigenschaft | Beschreibung | Alternative |
|---|---|---|
__count__ |
Gibt die Anzahl der direkt verfgbaren aufzhlbaren Eigenschaften auf einem benutzerdefinierten Objekt zurck. | Object.keys() |
__parent__ |
Verweist auf den Kontext eines Objekts. | Keine direkte Ersatzmethode |
__iterator__ |
Wurde mit Legacy-Iteratoren verwendet. | Symbol.iterator und die neuen Iteration-Protokolle |
__noSuchMethod__ |
Eine Methode, die aufgerufen wird, wenn eine nicht vorhandene Eigenschaft als Methode aufgerufen wird. | Proxy |
Object.prototype.eval() |
Wertet einen JavaScript-Code-String im Kontext des angegebenen Objekts aus. | Keine direkte Ersatzmethode |
Object.observe() |
Asynchrones Beobachten von nderungen an einem Objekt. | Proxy |
Object.unobserve() |
Entfernt Beobachter. | Proxy |
Object.getNotifier() |
Erzeugt ein Notifier-Objekt, das es ermglicht, eine nderungsbeobachtung mit Object.observe() synthetisch auszulsen. |
Keine direkte Ersatzmethode |
Object.prototype.watch() |
Hngt einen Callback-Handler an eine Eigenschaft, der aufgerufen wird, wenn der Eigenschaft zugewiesen wird. | Proxy |
Object.prototype.unwatch() |
Entfernt Watch-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 erklrt 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 einem WeakMap zu durchlaufen.Date.prototype.toLocaleFormat(), das ein Formatstring im gleichen Format verwendete, das von der Funktion strftime() in C erwartet wird, 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 erklrt 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 statt dessen 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.function () 1 als Kurzform von function () { return 1; }) sind obsolet. Verwenden Sie regulre Funktionen oder Pfeilfunktionen.Die toSource()-Methoden von Arrays, Zahlen, Strings usw. und die globale Funktion uneval() sind obsolet. Verwenden Sie toString(), oder schreiben Sie Ihre eigene Serialisierungsmethode.
Legacy-Generator-Funktionsanweisungen und Legacy-Generator-Funktionsausdrcke sind entfernt. Die Syntax der Legacy-Generator-Funktion verwendet das function-Schlsselwort, das automatisch zu einer Generator-Funktion wird, wenn es eine oder mehrere yield-Ausdrcke im Krper gibt dies ist jetzt ein Syntaxfehler. Verwenden Sie function*-Anweisungen und function*-Ausdrcke anstelle dessen.
Array-Konstruktionen und Generator-Konstruktionen 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 implementierte vor Version 26 ein weiteres Iterationsprotokoll, das dem Standard Iterators-Protokoll hnelt. Ein Objekt ist ein Legacy-Iterator, wenn es eine next()-Methode implementiert, die bei jedem Aufruf einen Wert geliefert und ein StopIteration-Objekt am Ende der Iteration ausgelst hat. Dieses Legacy-Iterator-Protokoll unterscheidet sich vom Standard-Iterator-Protokoll:
next()-Aufrufe zurckgegeben, anstatt der value-Eigenschaft des IteratorResult-Objekts.StopIteration-Objekts erreicht, anstatt durch die done-Eigenschaft des IteratorResult-Objekts.Diese Funktion, zusammen mit dem StopIteration globalen Konstruktor, wurde in Firefox 58+ entfernt. Fr zukunftsorientierte Verwendungen sollten Sie die for...of-Schleifen und das Iterator-Protokoll nutzen.
Sharp-Variablen sind obsolet. Verwenden Sie stattdessen temporre Variablen, um zirkulre Strukturen zu erstellen.
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 |