// empoisonnement objet.prototypeObject.prototype.bar = 1; var foo = {goo: undefined}; foo.bar; // 1'bar 'à foo; // truefoo.hasownproperty ('bar'); // falsefoo.hasownproperty ('goo'); // vraiIci, seul HasownProperty peut donner la bonne réponse, ce qui est très nécessaire lorsqu'il s'agit de traverser les propriétés d'un objet. Il n'y a pas d'autre moyen dans JavaScript de dire si un attribut est défini dans l'objet lui-même ou hérité de la chaîne prototype.
Hasownproperty comme propriété
JavaScript ne définit pas HasownProperty en tant que mot sensible, ce qui signifie que vous pouvez avoir une propriété nommée HasownProperty. Pour le moment, vous ne pouvez plus utiliser votre méthode HasownProperty pour juger les propriétés, vous devez donc utiliser la méthode externe HasownProperty pour faire des jugements.
var foo = {HasownProperty: function () {return false; }, bar: 'Ici be dragons'}; foo.hasownproperty ('bar'); // Renvoie toujours false // Utilisez HasownProperty d'un autre objet et appelez-le avec «ce» ensemble sur foo ({}). Hasownproperty.call (foo, 'bar'); // true // Il est également possible d'utiliser HasownProperty à partir du prototype d'objet // pour ce butobject.prototype.hasownproperty.call (foo, 'bar'); // vraiRésumer
Lorsque vous jugez que l'attribut objet existe, HasownProperty est la seule méthode sur laquelle on peut s'appuyer. Ici, nous voulons également vous rappeler que lorsque nous utilisons pour dans Loop pour traverser des objets, l'utilisation de HasownProperty sera bonne pour éviter les troubles causés par les extensions d'objets prototypes.
Voici les ajouts d'autres internautes:
HasownProperty () sur le prototype d'objet objet dans JavaScript est utilisé pour déterminer qu'une propriété est définie dans l'objet lui-même plutôt qu'hérité de la chaîne prototype.
Obj.HasownProperty (PROP)
Accessoire de paramètre
Le nom ou le symbole de la chaîne d'attribut (ES6) à détecter
o = new object (); o.prop = 'exists'; o.hasownproperty ('prop'); // retourne trueo.hasownproperty («toString»); // retourne falseo.hasownproperty («HasownProperty»); // retourne falseUtiliser HasownProperty comme nom de propriété d'un objet
Parce que JavaScript n'utilise pas HasownProperty comme mot sensible, il est très probable que nous nommerons une propriété de l'objet comme HasownProperty, afin que nous ne puissions plus utiliser la méthode HasownProperty du prototype d'objet pour déterminer si la propriété provient de la chaîne prototype.
var foo = {HasownProperty: function () {return false; }, bar: 'Ici be dragons'}; foo.hasownproperty ('bar'); // retourne toujours fauxComment résoudre ce problème en n'utilisant pas cette méthode objet.HasownProperty? Nous devons utiliser la méthode réelle HasownProperty sur la chaîne prototype:
({}). HasownProperty.Call (foo, 'bar'); // true // ou: object.prototype.hasownproperty.call (foo, 'bar'); // vraiRéférence: https://developer.mozilla.org/zh-cn/docs/web/javascript/reference/global_objects/object/hasownproperty