Heim  >  Artikel  >  Web-Frontend  >  Javascript-Studiennotizen – Objekte (3): hasOwnProperty_Basic Knowledge

Javascript-Studiennotizen – Objekte (3): hasOwnProperty_Basic Knowledge

WBOY
WBOYOriginal
2016-05-16 16:43:221135Durchsuche
// Poisoning Object.prototype
Object.prototype.bar = 1;
var foo = {goo: undefined};

foo.bar; // 1
'bar' in foo; // true

foo.hasOwnProperty('bar'); // false
foo.hasOwnProperty('goo'); // true

Hier kann nur hasOwnProperty die richtige Antwort geben, was beim Durchlaufen der Eigenschaften eines Objekts sehr wichtig ist. In Javascript gibt es keine andere Möglichkeit festzustellen, ob eine Eigenschaft für das Objekt selbst definiert ist oder von der Prototypenkette geerbt wird.

hasOwnProperty als Eigenschaft

Javascript macht hasOwnProperty nicht zu einem sensiblen Wort, was bedeutet, dass Sie eine Eigenschaft mit dem Namen hasOwnProperty haben können. Derzeit können Sie Ihre eigene hasOwnProperty-Methode nicht mehr zum Beurteilen von Eigenschaften verwenden. Sie müssen daher die externe hasOwnProperty-Methode zum Beurteilen verwenden.

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 hasOwnProperty from the Object
// prototype for this purpose
Object.prototype.hasOwnProperty.call(foo, 'bar'); // true

Zusammenfassung

Bei der Bestimmung der Existenz von Objekteigenschaften ist hasOwnProperty die einzige Methode, auf die man sich verlassen kann. Ich möchte Sie auch daran erinnern, dass bei der Verwendung einer for-in-Schleife zum Durchlaufen von Objekten durch die Verwendung von hasOwnProperty die durch die Erweiterung von Prototypobjekten verursachten Probleme effektiv vermieden werden.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn