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 März 2022 browserübergreifend verfügbar.
Die statische Methode Object.hasOwn() gibt true zurück, wenn das angegebene Objekt die angegebene Eigenschaft als seine eigene Eigenschaft besitzt. Wenn die Eigenschaft geerbt wurde oder nicht existiert, gibt die Methode false zurück.
Hinweis: Object.hasOwn() ist als Ersatz für Object.prototype.hasOwnProperty() gedacht.
Die JavaScript-Objektinstanz, die getestet werden soll.
propDer String-Name oder Symbol der Eigenschaft, die getestet werden soll.
true, wenn das angegebene Objekt die angegebene Eigenschaft direkt definiert hat. Andernfalls false.
Die Methode Object.hasOwn() gibt true zurück, wenn die angegebene Eigenschaft eine direkte Eigenschaft des Objekts ist — selbst wenn der Eigenschaftswert null oder undefined ist. Die Methode gibt false zurück, wenn die Eigenschaft geerbt wurde oder überhaupt nicht deklariert wurde. Anders als der in-Operator überprüft diese Methode nicht, ob die angegebene Eigenschaft in der Prototypkette des Objekts existiert.
Es wird empfohlen, diese Methode gegenüber Object.prototype.hasOwnProperty() zu verwenden, da sie mit null-Prototyp-Objekten und mit Objekten funktioniert, die die geerbte Methode hasOwnProperty() überschrieben haben. Während es möglich ist, diese Probleme zu umgehen, indem Object.prototype.hasOwnProperty() auf einem anderen Objekt aufgerufen wird (wie z. B. Object.prototype.hasOwnProperty.call(obj, prop)), ist Object.hasOwn() intuitiver und kürzer.
Der folgende Code zeigt, wie festgestellt werden kann, ob das example-Objekt eine Eigenschaft namens prop enthält.
Das folgende Beispiel unterscheidet zwischen direkten Eigenschaften und Eigenschaften, die über die Prototypkette geerbt wurden:
Um über die aufzählbaren Eigenschaften eines Objekts zu iterieren, sollten Sie verwenden:
Aber wenn Sie for...in verwenden müssen, können Sie Object.hasOwn() verwenden, um die geerbten Eigenschaften zu überspringen:
Die Elemente eines Array sind als direkte Eigenschaften definiert, daher können Sie die Methode hasOwn() verwenden, um zu überprüfen, ob ein bestimmter Index existiert:
Dieser Abschnitt zeigt, dass Object.hasOwn() immun gegen die Probleme ist, die hasOwnProperty() betreffen. Erstens kann es mit Objekten verwendet werden, die hasOwnProperty() neu implementiert haben. Im folgenden Beispiel meldet die neu implementierte hasOwnProperty()-Methode für jede Eigenschaft false, aber das Verhalten von Object.hasOwn() bleibt unberührt:
Es kann auch mit null-Prototyp-Objekten verwendet werden. Diese erben nicht von Object.prototype, und daher ist hasOwnProperty() nicht zugänglich.
| ECMAScript® 2027 Language Specification # sec-object.hasown |
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.