| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwn | [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 Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Mrz 2022 browserbergreifend verfgbar.
Die statische Methode Object.hasOwn() gibt true zurck, wenn das angegebene Objekt die angegebene Eigenschaft als seine eigene Eigenschaft besitzt. Wenn die Eigenschaft geerbt wurde oder nicht existiert, gibt die Methode false zurck.
Hinweis:
Object.hasOwn() ist als Ersatz fr Object.prototype.hasOwnProperty() gedacht.
const object = {
prop: "exists",
};
console.log(Object.hasOwn(object, "prop"));
// Expected output: true
console.log(Object.hasOwn(object, "toString"));
// Expected output: false
console.log(Object.hasOwn(object, "undeclaredPropertyValue"));
// Expected output: false
Object.hasOwn(obj, prop)
objDie 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 zurck, wenn die angegebene Eigenschaft eine direkte Eigenschaft des Objekts ist selbst wenn der Eigenschaftswert null oder undefined ist. Die Methode gibt false zurck, wenn die Eigenschaft geerbt wurde oder berhaupt nicht deklariert wurde. Anders als der in-Operator berprft diese Methode nicht, ob die angegebene Eigenschaft in der Prototypkette des Objekts existiert.
Es wird empfohlen, diese Methode gegenber Object.prototype.hasOwnProperty() zu verwenden, da sie mit null-Prototyp-Objekten und mit Objekten funktioniert, die die geerbte Methode hasOwnProperty() berschrieben haben. Whrend es mglich 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 krzer.
Der folgende Code zeigt, wie festgestellt werden kann, ob das example-Objekt eine Eigenschaft namens prop enthlt.
const example = {};
Object.hasOwn(example, "prop"); // false - 'prop' has not been defined
example.prop = "exists";
Object.hasOwn(example, "prop"); // true - 'prop' has been defined
example.prop = null;
Object.hasOwn(example, "prop"); // true - own property exists with value of null
example.prop = undefined;
Object.hasOwn(example, "prop"); // true - own property exists with value of undefined
Das folgende Beispiel unterscheidet zwischen direkten Eigenschaften und Eigenschaften, die ber die Prototypkette geerbt wurden:
const example = {};
example.prop = "exists";
// `hasOwn` will only return true for direct properties:
Object.hasOwn(example, "prop"); // true
Object.hasOwn(example, "toString"); // false
Object.hasOwn(example, "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
Um ber die aufzhlbaren Eigenschaften eines Objekts zu iterieren, sollten Sie verwenden:
const example = { foo: true, bar: true };
for (const name of Object.keys(example)) {
//
}
Aber wenn Sie for...in verwenden mssen, knnen Sie Object.hasOwn() verwenden, um die geerbten Eigenschaften zu berspringen:
const example = { foo: true, bar: true };
for (const name in example) {
if (Object.hasOwn(example, name)) {
//
}
}
Die Elemente eines Array sind als direkte Eigenschaften definiert, daher knnen Sie die Methode hasOwn() verwenden, um zu berprfen, ob ein bestimmter Index existiert:
const fruits = ["Apple", "Banana", "Watermelon", "Orange"];
Object.hasOwn(fruits, 3); // true ('Orange')
Object.hasOwn(fruits, 4); // false - not defined
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 fr jede Eigenschaft false, aber das Verhalten von Object.hasOwn() bleibt unberhrt:
const foo = {
hasOwnProperty() {
return false;
},
bar: "The dragons be out of office",
};
console.log(foo.hasOwnProperty("bar")); // false
console.log(Object.hasOwn(foo, "bar")); // true
Es kann auch mit null-Prototyp-Objekten verwendet werden. Diese erben nicht von Object.prototype, und daher ist hasOwnProperty() nicht zugnglich.
const foo = Object.create(null);
foo.prop = "exists";
console.log(foo.hasOwnProperty("prop"));
// Uncaught TypeError: foo.hasOwnProperty is not a function
console.log(Object.hasOwn(foo, "prop")); // true
| Spezifikation |
|---|
| ECMAScript 2027 LanguageSpecification # sec-object.hasown |
Object.hasOwn in core-jsObject.hasOwnObject.prototype.hasOwnProperty()Object.getOwnPropertyNames()for...ininObjectassign()create()defineProperties()defineProperty()entries()freeze()fromEntries()getOwnPropertyDescriptor()getOwnPropertyDescriptors()getOwnPropertyNames()getOwnPropertySymbols()getPrototypeOf()groupBy()hasOwn()is()isExtensible()isFrozen()isSealed()keys()preventExtensions()seal()setPrototypeOf()values()Object/FunctionDer 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 |