Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Object.getOwnPropertyDescriptors()

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit April 2017 browserübergreifend verfügbar.

Die statische Methode Object.getOwnPropertyDescriptors() gibt alle eigenen Eigenschaftsdeskriptoren eines angegebenen Objekts zurück.

Probieren Sie es aus

const object = {
  foo: 42,
};

const descriptors = Object.getOwnPropertyDescriptors(object);

console.log(descriptors.foo.writable);
// Expected output: true

console.log(descriptors.foo.value);
// Expected output: 42

Syntax

js
Object.getOwnPropertyDescriptors(obj)

Parameter

obj

Das Objekt, dessen eigene Eigenschaftsdeskriptoren abgerufen werden sollen.

Rückgabewert

Ein Objekt, das alle eigenen Eigenschaftsdeskriptoren des angegebenen Objekts enthält. Wenn keine Eigenschaften vorhanden sind, kann es leer sein.

Beschreibung

Mit dieser Methode lässt sich die genaue Beschreibung aller eigenen Eigenschaften eines Objekts untersuchen. Eine Eigenschaft in JavaScript besteht aus einem Namen als Zeichenfolge oder einem Symbol sowie einem Eigenschaftsdeskriptor. Weitere Informationen über die Typen von Eigenschaftsdeskriptoren und ihre Attribute finden Sie unter Object.defineProperty().

Ein Eigenschaftsdeskriptor ist ein Datensatz mit einigen der folgenden Attribute:

value

Der mit der Eigenschaft verknüpfte Wert (nur bei Datendeskriptoren).

writable

true genau dann, wenn der mit der Eigenschaft verknüpfte Wert geändert werden kann (nur bei Datendeskriptoren).

get

Eine Funktion, die als Getter für die Eigenschaft dient, oder undefined, wenn kein Getter vorhanden ist (nur bei Zugriffdeskriptoren).

set

Eine Funktion, die als Setter für die Eigenschaft dient, oder undefined, wenn kein Setter vorhanden ist (nur bei Zugriffdeskriptoren).

configurable

true genau dann, wenn der Typ dieses Eigenschaftsdeskriptors geändert und die Eigenschaft aus dem zugehörigen Objekt gelöscht werden kann.

enumerable

true genau dann, wenn diese Eigenschaft bei der Aufzählung der Eigenschaften des zugehörigen Objekts erscheint.

Beispiele

Eine flache Kopie erstellen

Während die Methode Object.assign() nur aufzählbare eigene Eigenschaften von einem Quellobjekt in ein Zielobjekt kopiert, können Sie mit dieser Methode und Object.create() eine flache Kopie zwischen zwei beliebigen Objekten erstellen:

js
Object.create(
  Object.getPrototypeOf(obj),
  Object.getOwnPropertyDescriptors(obj),
);

Eine Unterklasse erstellen

Eine übliche Vorgehensweise zum Erstellen einer Unterklasse besteht darin, die Unterklasse zu definieren, ihren Prototyp auf eine Instanz der Oberklasse zu setzen und anschließend Eigenschaften auf dieser Instanz zu definieren. Das kann insbesondere bei Gettern und Settern umständlich sein. Stattdessen können Sie den Prototyp mit folgendem Code festlegen:

js
function superclass() {}
superclass.prototype = {
  // Define the superclass constructor, methods, and properties here
};
function subclass() {}
subclass.prototype = Object.create(superclass.prototype, {
  // Define the subclass constructor, methods, and properties here
});

Spezifikationen

Spezifikation
ECMAScript® 2027 Language Specification
# sec-object.getownpropertydescriptors

Browser-Kompatibilität

Siehe auch