Maison  >  Article  >  interface Web  >  Introduction aux méthodes de lecture et d'écriture des propriétés d'objet dans les compétences JavaScript_javascript

Introduction aux méthodes de lecture et d'écriture des propriétés d'objet dans les compétences JavaScript_javascript

WBOY
WBOYoriginal
2016-05-16 16:23:091502parcourir

En JavaScript, vous pouvez utiliser l'opérateur point "." ou l'opérateur crochet "[]" pour lire et écrire la propriété d'un objet :


Copier le code Le code est le suivant :

var o = {x:1, y:2};
console.log(o.x);//1
console.log(o["y"]);//2
o.y = 7;
console.log(o["y"]);//7


Il convient de noter que si l'opérateur crochet est utilisé, le type de valeur dans l'opérateur doit être une chaîne ou une expression qui peut être convertie en chaîne :


Copier le code Le code est le suivant :

console.log(o[y]);//ReferenceError : y n'est pas défini
var v = "y";
console.log(o[v]);//7


Contrairement au langage Java, les propriétés des objets en JavaScript peuvent être ajoutées ou supprimées dynamiquement. Lors de l'attribution d'une valeur à une propriété, si la propriété n'existe pas, JavaScript ajoutera dynamiquement la propriété à l'objet :


Copier le code Le code est le suivant :

o.z = 99;
console.log(o);//Object {x=1, y=7, z=99}

Lecture de la propriété dans la chaîne d'héritage prototypique

Tous les objets en JavaScript ont un objet prototype et héritent des propriétés de l'objet prototype. Par conséquent, les propriétés d'un objet en JS sont divisées en deux grandes catégories :

1. La propriété appartenant à l'objet lui-même (« Propre propriété »).
2. Propriété héritée de l'objet prototype.

Lors de la lecture de la propriété d'un objet, les règles suivies sont les suivantes :

1. Recherchez la propriété qui doit être lue dans la propre collection de propriétés de l'objet (« Propre propriété ») ; si elle peut être recherchée, lisez directement la propriété et renvoyez sa valeur.
2. Si la propriété ne peut pas être recherchée dans la propre collection de propriétés de l'objet (« Propre propriété »), la recherche se poursuit à partir de la chaîne de prototypes de l'objet jusqu'à ce que la propriété soit recherchée et que sa valeur soit renvoyée.
3. Si la propriété ne peut pas être recherchée dans la propre collection de propriétés de l'objet (« Propre propriété ») ou dans tous les objets prototypes de l'objet, undefined est renvoyé.

Écriture des propriétés dans la chaîne d'héritage prototypique

Lors de l'écriture dans la propriété d'un objet JavaScript, les règles suivies sont les suivantes :

1. Si l'objet lui-même a la propriété et que la propriété est accessible en écriture, écrivez la nouvelle valeur dans la propriété. Si la propriété est en lecture seule, une erreur sera signalée.
2. Si l'objet lui-même ne possède pas la propriété et que la propriété n'existe pas dans tous ses objets prototypes, ajoutez la propriété à l'objet.
3. Si l'objet lui-même n'a pas la propriété, mais que la propriété existe dans son objet prototype et est accessible en écriture, alors JS créera une nouvelle propriété dans l'objet ; c'est-à-dire que l'objet écrasera la propriété dans son objet prototype. La valeur de cette propriété dans l'objet prototype reste inchangée.
4. Si l'objet lui-même ne possède pas la propriété, mais que la propriété existe dans son objet prototype et est en lecture seule, une erreur sera signalée.
5. Si l'objet lui-même n'a pas la propriété, mais que la méthode setter de la propriété existe dans son objet prototype, alors JS appellera la méthode setter dans l'objet prototype. Il convient de noter que lors de l'exécution de la méthode setter, si l'affectation de variable est impliquée, l'opération d'affectation agira sur l'objet lui-même et l'objet prototype ne sera en aucun cas modifié. Ce comportement peut être compris comme : l'objet hérite de la fonction setter du prototype et l'exécute.

Il ressort des règles ci-dessus que si l'opération d'affectation à la propriété réussit, la dernière chose à modifier sera toujours l'objet lui-même, et son objet prototype prototype n'aura aucun changement.

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