Maison > interface Web > js tutoriel > le corps du texte

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

WBOY
Libérer: 2016-05-16 16:43:22
original
1133 Les gens l'ont consulté
// 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
Copier après la connexion

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
Copier après la connexion

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.

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal