Die Methode hasOwnProperty()
gibt einen boolean Wert zurück abhängig von der Existenz des gegebenen Attributs in einem Objekt.
Syntax
obj.hasOwnProperty(prop)
Parameter
prop
- Der Name des Attributs auf dessen Existenz im Objekt geprüft wird
Rückgabewert
Ein Boolean
der besagt, ob eine Eigenschaft in dem gegebenen Objekte vorhanden ist oder nicht.
Beschreibung
Jedes untergeordnete Objekt / jeder untergeordneter Wert in einem Objekt trägt die hasOwnProperty Methode mit sich. Diese Methode ermöglicht das Nachfragen eines untergeordneten Wertes/Objekts innerhalb eines Objekts. Anders als die in
Methode ermöglicht die hasOwnProperty Methode keinen Zugriff auf die Kindeskinder eines Objekts.
Beispiele
Einsatz von hasOwnProperty zur Überprüfung der Existenz eines Attributs in einem Objekt
Das folgende Beispiel prüft ob das Objekt o
ein Attribut mit dem Namen prop
beinhaltet.
o = new Object(); o.prop = 'exists'; function changeO() { o.newprop = o.prop; delete o.prop; } o.hasOwnProperty('prop'); // gibt true zurück changeO(); o.hasOwnProperty('prop'); // gibt false zurück
Direkter Nachfolger vs Geerbtes Attribut
Das folgende Beispiel unterscheidet zwischen direkten Kind-Attributen eines Ojekts und den Aittributen die durch die prototype - Verarbeitung entstehen.
o = new Object(); o.prop = 'exists'; o.hasOwnProperty('prop'); // gibt true zurück o.hasOwnProperty('toString'); // gibt false zurück o.hasOwnProperty('hasOwnProperty'); // gibt false zurück
Über die Eigenschaften eines Objektes iterieren
Das folgende Beispiel zeigt, wie man über die Eigenschaften eines Objektes iteriert ohne vererbte Eigenschaften auszuführen. Zu Beachten ist, dass eine for...in
Schleife nur über zählbare (enumerable) Eigenschaften iteriert, jedoch sollte man durch diese einschränkung nicht annehmen, dass nicht-zählbare Eigenschaften gezeigt werden, denn hasOwnProperty
selbst kann nur auf zählbare Eigenschaften angewendet werden (wie auch die Object.getOwnPropertyNames()
Funktion):
var buz = { fog: 'stack' }; for (var 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 } }
Einsatz von hasOwnProperty
als Eigenschaftsname
JavaScript schützt die den Eigenschaftsnamen hasOwnProperty
nicht. Dadurch ist es möglich, dass ein Objekt eine Eigenschaft mit diesem namen hat. Das ermöglicht es eine externe hasOwnProperty
Funktion zu benutzen:
var foo = { hasOwnProperty: function() { return false; }, bar: 'Here be dragons' }; foo.hasOwnProperty('bar'); // always returns false // Use another Object's hasOwnProperty and call it with 'this' set to foo ({}).hasOwnProperty.call(foo, 'bar'); // true // It's also possible to use the hasOwnProperty property from the Object prototype for this purpose Object.prototype.hasOwnProperty.call(foo, 'bar'); // true
Zu beachten ist, dass im letzen Fall kein neues Objekt erstellt wird.
Spezifikationen
Spezifikation | Status | Kommentar |
---|---|---|
ECMAScript 3rd Edition (ECMA-262) | Standard | Initiale Definition. Implementiert in JavaScript 1.5. |
ECMAScript 5.1 (ECMA-262) Die Definition von 'Object.prototype.hasOwnProperty' in dieser Spezifikation. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) Die Definition von 'Object.prototype.hasOwnProperty' in dieser Spezifikation. |
Standard | |
ECMAScript 2017 Draft (ECMA-262) Die Definition von 'Object.prototype.hasOwnProperty' in dieser Spezifikation. |
Entwurf |
Browserkompatibilität
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | (Ja) | (Ja) | (Ja) | (Ja) | (Ja) | (Ja) |
Feature | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | iOS WebKit (Safari/Chrome/Firefox/etc) |
---|---|---|---|---|---|---|---|---|
Basic support | (Ja) | (Ja) | (Ja) | (Ja) | (Ja) | (Ja) | (Ja) | (Ja) |