En JavaScript, vous pouvez utiliser l'opérateur point "." ou l'opérateur crochet "[]" pour lire et écrire la propriété d'un objet :
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 :
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 :
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.