Maison  >  Article  >  interface Web  >  Notes d'étude Javascript - Objets (3) : hasOwnProperty_Basic Knowledge

Notes d'étude Javascript - Objets (3) : hasOwnProperty_Basic Knowledge

WBOY
WBOYoriginal
2016-05-16 16:43:221094parcourir
// 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

Ici, seul hasOwnProperty peut donner la bonne réponse, ce qui est très nécessaire lors du parcours des propriétés d'un objet. Il n'existe aucun autre moyen en Javascript de savoir si une propriété est définie sur l'objet lui-même ou héritée de la chaîne de prototypes.

hasOwnProperty comme propriété

Javascript ne fait pas de hasOwnProperty un mot sensible, ce qui signifie que vous pouvez avoir une propriété nommée hasOwnProperty. Pour le moment, vous ne pouvez plus utiliser votre propre méthode hasOwnProperty pour juger des propriétés, vous devez donc utiliser la méthode hasOwnProperty externe pour juger.

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

Résumé

Pour déterminer l'existence de propriétés d'objet, hasOwnProperty est la seule méthode sur laquelle on peut s'appuyer. Je voudrais également vous rappeler que lorsque nous utilisons une boucle for in pour parcourir des objets, l'utilisation de hasOwnProperty évitera efficacement les problèmes causés par l'expansion des objets prototypes.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn