Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit April 2021 browserübergreifend verfügbar.
* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.
Ein WeakRef-Objekt ermöglicht es Ihnen, einen schwachen Verweis auf ein anderes Objekt zu halten, ohne zu verhindern, dass dieses Objekt vom Garbage Collector eingesammelt wird.
Ein WeakRef-Objekt enthält einen schwachen Verweis auf ein Objekt, das als sein Ziel oder Referent bezeichnet wird. Ein schwacher Verweis auf ein Objekt ist ein Verweis, der nicht verhindert, dass das Objekt vom Garbage Collector zurückgefordert wird. Im Gegensatz dazu hält ein normaler (oder starker) Verweis ein Objekt im Speicher. Wenn ein Objekt keine starken Verweise mehr auf sich hat, kann der Garbage Collector der JavaScript-Engine das Objekt zerstören und seinen Speicher wieder freigeben. In diesem Fall kann nicht mehr auf das Objekt über einen schwachen Verweis zugegriffen werden.
Da auch nicht registrierte Symbole vom Garbage Collector eingesammelt werden können, können sie ebenfalls als Ziel eines WeakRef-Objekts verwendet werden. Der Anwendungsfall hierfür ist jedoch begrenzt.
Der korrekte Einsatz von WeakRef erfordert sorgfältige Überlegung und sollte nach Möglichkeit vermieden werden. Es ist auch wichtig, sich nicht auf irgendwelche Verhaltensweisen zu verlassen, die nicht von der Spezifikation garantiert werden. Wann, wie und ob die Garbage Collection erfolgt, hängt von der Implementierung der jeweiligen JavaScript-Engine ab. Ein Verhalten, das Sie in einer Engine beobachten, kann in einer anderen Engine, in einer anderen Version derselben Engine oder sogar in einer leicht unterschiedlichen Situation mit derselben Version der Engine anders sein. Die Garbage Collection ist ein schwieriges Problem, das von den Entwicklern der JavaScript-Engines ständig verfeinert und verbessert wird.
Hier sind einige spezielle Punkte, die von den Autoren im Vorschlag enthalten sind, der WeakRef eingeführt hat:
Garbage Collector sind kompliziert. Wenn eine Anwendung oder Bibliothek darauf angewiesen ist, dass der GC einen WeakRef oder einen Finalizer [Aufräum-Callback] zeitnah und vorhersehbar aufräumt, wird sie wahrscheinlich enttäuscht sein: Die Bereinigung kann viel später als erwartet erfolgen oder überhaupt nicht. Quellen der Variabilität umfassen:
Erstellt ein neues WeakRef-Objekt.
Diese Eigenschaften sind auf WeakRef.prototype definiert und werden von allen WeakRef-Instanzen geteilt.
WeakRef.prototype.constructor OptionalDie Konstruktionsfunktion, die das Instanzobjekt erstellt hat. Für WeakRef-Instanzen ist der Anfangswert der WeakRef-Konstruktor.
Hinweis: Diese Eigenschaft ist in der Spezifikation als "normativ optional" gekennzeichnet, was bedeutet, dass eine konforme Implementierung die constructor-Eigenschaft möglicherweise nicht offenlegt. Dies verhindert, dass beliebiger Code den WeakRef-Konstruktor erhält und die Garbage Collection beobachtet. Allerdings enthüllen alle großen Engines sie standardmäßig.
Der Anfangswert der [Symbol.toStringTag]-Eigenschaft ist der String "WeakRef". Diese Eigenschaft wird in Object.prototype.toString() verwendet.
Gibt das Zielobjekt des WeakRef-Objekts oder undefined zurück, wenn das Zielobjekt zurückgefordert wurde.
Dieses Beispiel startet einen Zähler, der in einem DOM-Element angezeigt wird und anhält, wenn das Element nicht mehr existiert:
| ECMAScript® 2027 Language Specification # sec-weak-ref-objects |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.