Maison >interface Web >js tutoriel >JavaScript détecte les attributs d'instance et les astuces du prototypeattributs_javascript

JavaScript détecte les attributs d'instance et les astuces du prototypeattributs_javascript

WBOY
WBOYoriginal
2016-05-16 16:16:021097parcourir

0. Prérequis

Les propriétés des objets JavaScript sont divisées en deux formes d'existence. L'une est dans l'instance et l'autre est dans l'objet prototype.

Selon ce qui précède, 4 situations se produiront lors de la détection des attributs

N'existe pas dans l'instance ou l'objet prototype
Existe dans l'instance, n'existe pas dans l'objet prototype
N'existe pas dans l'instance, existe dans l'objet prototype
Il existe à la fois dans l'instance et dans l'objet prototype

1.hasOwnPrototype()

hasOwnPrototype() accepte un nom de propriété au format chaîne, et si la propriété existe dans l'instance elle-même (cas 2/cas 4), renvoie true Sinon, renvoie false (cas 1/cas 3).

Copier le code Le code est le suivant :

functino Personne() {}
Person.prototype.name = 'pomme';
var personne1 = nouvelle Personne();
var personne2 = nouvelle Personne();
person1.name = 'banane';
console.log(person1.hasOwnPrototype(name)); //true
console.log(person2.hasOwnPrototype(name)); //false

Opérateur 2.in

L'opérateur

in retournera vrai (cas 2/cas 3/cas 4), que l'attribut existe dans l'instance elle-même ou dans l'objet prototype ; sinon, il retournera faux (cas 1).

Copier le code Le code est le suivant :

console.log('nom' dans personne1); //true
console.log('nom' dans personne2); //true

3. Détecter l'existence d'attributs de prototype

Combiné avec l'opérateur in et hasOwnProperty(), vous pouvez personnaliser une fonction pour détecter si une propriété donnée existe dans le prototype.

Copier le code Le code est le suivant :

function hasPrototypeProperty (objet, nom) {
Renvoie !object.hasOwnPrototype(name) && (nom dans l'objet);
>
console.log(hasPrototypeProperty(person1, 'name')); //false
console.log(hasPrototypeProperty(person2, 'name')); //true

Si l'attribut donné existe dans le prototype, renvoie vrai (cas 3). Sinon, renvoie faux (cas 1/cas 2/cas 4).

Ce qui précède représente l'intégralité du contenu de cet article, j'espère que vous l'aimerez tous

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