Maison > Article > interface Web > Notes d'étude Javascript - Objets (3) : hasOwnProperty_Basic Knowledge
// 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.