Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. JavaScript-Referenz
  4. Eingebaute Standardobjekte
  5. Objekt
  6. hasOwnProperty()

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

View in EnglishAlways switch to English

Object.prototype.hasOwnProperty()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨Juli 2015⁩.

DiehasOwnProperty()-Methode vonObject Instanzen gibt einen booleschen Wert zurück, der angibt, ob diesesObjekt die angegebene Eigenschaft als eigene Eigenschaft hat (im Gegensatz zum Vererben).

Hinweis:Object.hasOwn() wird überhasOwnProperty() empfohlen, in Browsern, die es unterstützen.

Probieren Sie es aus

const object = {};object.foo = 42;console.log(object.hasOwnProperty("foo"));// Expected output: trueconsole.log(object.hasOwnProperty("toString"));// Expected output: falseconsole.log(object.hasOwnProperty("hasOwnProperty"));// Expected output: false

Syntax

js
hasOwnProperty(prop)

Parameter

prop

DerString-Name oder dasSymbol der zu testenden Eigenschaft.

Rückgabewert

Gibttrue zurück, wenn das Objekt die angegebene Eigenschaft als eigene Eigenschaft hat; andernfallsfalse.

Beschreibung

DiehasOwnProperty()-Methode gibttrue zurück, wenn die angegebene Eigenschaft einedirekte Eigenschaft des Objekts ist — selbst wenn der Wertnull oderundefined ist. DieMethode gibtfalse zurück, wenn die Eigenschaft vererbt wurde oder überhaupt nicht deklariert wurde. Im Gegensatz zumin Operator prüft dieseMethode nicht die angegebene Eigenschaft in der Prototypen-Kette des Objekts.

Die Methode kann aufden meisten JavaScript-Objekten aufgerufen werden, da die meisten ObjektevonObject abstammen und daher dessen Methoden erben. ZumBeispiel istArray einObject, sodass Sie diehasOwnProperty()-Methode verwenden können, um zu prüfen, ob ein Index existiert:

js
const fruits = ["Apple", "Banana", "Watermelon", "Orange"];fruits.hasOwnProperty(3); // true ('Orange')fruits.hasOwnProperty(4); // false - not defined

Die Methode ist nicht verfügbar in Objekten, in denen sie neu implementiert wird, oder beinull-Prototyp-Objekten (da diese nicht vonObject.prototype erben). Beispiele für diese Fälle sind unten angegeben.

Beispiele

Verwenden von hasOwnProperty, um das Vorhandensein einer eigenen Eigenschaft zu testen

Der folgende Code zeigt, wie ermittelt werden kann, ob dasexample-Objekt eine Eigenschaft mit dem Namenprop enthält.

js
const example = {};example.hasOwnProperty("prop"); // falseexample.prop = "exists";example.hasOwnProperty("prop"); // true - 'prop' has been definedexample.prop = null;example.hasOwnProperty("prop"); // true - own property exists with value of nullexample.prop = undefined;example.hasOwnProperty("prop"); // true - own property exists with value of undefined

Direkte vs. vererbte Eigenschaften

Das folgende Beispiel unterscheidet zwischen direkten Eigenschaften und Eigenschaften, die über die Prototypen-Kette vererbt wurden:

js
const example = {};example.prop = "exists";// `hasOwnProperty` will only return true for direct properties:example.hasOwnProperty("prop"); // trueexample.hasOwnProperty("toString"); // falseexample.hasOwnProperty("hasOwnProperty"); // false// The `in` operator will return true for direct or inherited properties:"prop" in example; // true"toString" in example; // true"hasOwnProperty" in example; // true

Iteration über die Eigenschaften eines Objekts

Das folgende Beispiel zeigt, wie über die aufzählbaren Eigenschaften einesObjekts iteriert werden kann ohne vererbte Eigenschaften auszuführen.

js
const buz = {  fog: "stack",};for (const name in buz) {  if (buz.hasOwnProperty(name)) {    console.log(`this is fog (${name}) for sure. Value: ${buz[name]}`);  } else {    console.log(name); // toString or something else  }}

Beachten Sie, dass diefor...in-Schleifenur über aufzählbare Elemente iteriert: das Fehlen von nicht-auflistbaren Eigenschaften, die aus der Schleife ausgegeben werden,impliziert nicht, dasshasOwnProperty selbst strengauf aufzählbare Elemente beschränkt ist. Sie können über nicht-auflistbare Eigenschaften mitObject.getOwnPropertyNames() iterieren.

Verwenden von hasOwnProperty als Eigenschaftsname

JavaScript schützt den EigenschaftsnamenhasOwnProperty nicht; ein Objekt, daseine Eigenschaft mit diesem Namen hat, kann falsche Ergebnisse zurückgeben:

js
const foo = {  hasOwnProperty() {    return false;  },  bar: "Here be dragons",};foo.hasOwnProperty("bar"); // re-implementation always returns false

Die empfohlene Methode, um dieses Problem zu überwinden, ist die Verwendung vonObject.hasOwn() (in unterstützenden Browsern). AndereAlternativen beinhalten die Verwendung einesexternenhasOwnProperty:

js
const foo = { bar: "Here be dragons" };// Use Object.hasOwn() method - recommendedObject.hasOwn(foo, "bar"); // true// Use the hasOwnProperty property from the Object prototypeObject.prototype.hasOwnProperty.call(foo, "bar"); // true// Use another Object's hasOwnProperty// and call it with 'this' set to foo({}).hasOwnProperty.call(foo, "bar"); // true

Beachten Sie, dass in den ersten beiden Fällen keine neuen Objekte erstellt werden.

Objekte erstellt mit Object.create(null)

null-Prototyp-Objekte erben nicht vonObject.prototype, washasOwnProperty() unzugänglich macht.

js
const foo = Object.create(null);foo.prop = "exists";foo.hasOwnProperty("prop"); // Uncaught TypeError: foo.hasOwnProperty is not a function

Die Lösungen in diesem Fall sind dieselben wie im vorherigen Abschnitt: Verwenden SieObject.hasOwn() bevorzugt, andernfalls verwenden Sie dashasOwnProperty() eines externen Objekts.

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-object.prototype.hasownproperty

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp