Objets Javascript
Définition des objets JavaScript
En général, JavaScript est connu comme un langage de programmation orientée objet. Par conséquent, en JavaScript, les objets sont les types de données et les formes les plus importants. Ils sont totalement différents des types de données primitifs en JavaScript. Comme mentionné dans le chapitre “Data types”, il existe sept types de données en JavaScript, dont six sont appelés “primitifs” car leurs valeurs comprennent une seule chose (c'est peut être un nombre, une chaîne, etc.).
Contrairement aux types de données, nous utilisons des objets pour stocker des collections clés de différentes données et des entités plus compliquées. En JavaScript, les objets sont inclus dans tous les aspects du langage, vous devez donc les apprendre dès que vous commencez à étudier le langage.
Les objets sont créés avec des accolades {…} et doivent avoir une liste de propriétés. La propriété est connue comme une “key: value”, dans laquelle key ou le nom de la propriété est une chaîne et value peut être quoi que ce soit.
Vous pouvez créer un objet vide en exécutant l'une des syntaxes suivantes:
let user = new Object(); // "object constructor" syntax
let user = {}; // "object literal" syntax
En règle générale, on utilise des accolades {…}. Cette déclaration est appelée objet littéral.
Propriétés et littéraux
Vous pouvez immédiatement entrer des propriétés dans ces accolades sous forme de paires de “key: value”, comme ceci:
site a une propriété : le nom "name" et la valeur "W3Docs".
Les valeurs des propriétés peuvent être accessibles en utilisant la notation point, comme suit:
Il peut avoir n'importe quel type de valeur. Par exemple:
L'opérateur delete est utilisé pour supprimer une propriété. Par exemple:
Les noms de propriété Multiword peuvent également être utilisés. Mais ils doivent être cités comme ceci:
Terminez la dernière propriété de la liste par une virgule:
Crochets carrés
L'accès par point ne fonctionne pas pour des propriétés multi-mots. Voici un exemple:
// this would give a syntax error
site.teaches JS = true
Le point nécessite que la clé soit un identifiant de variable valide. Cela signifie aucune limitation, comme les espaces, etc.
Vous pouvez utiliser une alternative de notation de crochets carrés. Elle fonctionnera avec n'importe quelle chaîne. Par exemple:
Avec l'aide des crochets carrés, vous pouvez conserver le nom de la propriété en tant que résultat de n'importe quelle expression comme ceci:
Dans ce cas, la variable key peut soit être mesurée à l'exécution, soit dépendre de l'entrée de l'utilisateur. Ensuite, vous pouvez l'utiliser pour accéder à la propriété comme suit:
Notez que vous ne pouvez pas utiliser la notation point de la même façon:
Propriétés calculées
Les crochets carrés sont également utilisés dans un objet littéral. C'est connu sous le nom de propriétés calculées.
Voici un exemple:
Vous pouvez également utiliser des expressions plus compliquées dans des crochets carrés, comme ceci:
Donc, lorsque le nom de la propriété est simple et connu, vous pouvez utiliser des points. Et lorsque vous avez besoin de quelque chose de plus compliqué, vous passez aux crochets carrés.
Raccourci pour le nom de la propriété
Dans le code réel, les variables existantes sont souvent utilisées comme noms de valeur de propriété.
Voici un exemple:
function makeCar(name, model) {
return {
name, // same as name: name
model // same as model: model
// ...
};
}
Les propriétés normales et les raccourcis peuvent être utilisés dans le cadre du même projet. Cela ressemblera à ceci:
La boucle “for...in”
La boucle “for...in” loop est une forme unique de boucle. Elle est totalement différente de la boucle for(;;).
La syntaxe est la suivante:
for (key in object) {
// executes the body for each key among object properties
}
Voyons un exemple, où toutes les propriétés de car sont affichées :
Notez que toutes les constructions de “for” permettent de déclarer la variable de boucle dans la boucle. Par exemple, let key dans l'exemple ci-dessus. Un autre nom de variable peut également être utilisé à la place de key.
Vérification de l'existence
Un des avantages les plus importants des objets est qu'ils donnent accès à n'importe quelle propriété. Aucune erreur ne se produira, si la propriété n'existe pas. Si vous accédez à une propriété non existante, vous serez renvoyé à undefined. Il donne une opportunité unique de vérifier si la propriété existe ou non:
Vous pouvez également utiliser un opérateur unique "in" pour vérifier l'existence d'une propriété. Pour l'exécuter, utilisez la syntaxe suivante:
"key" in object
Copie par référence
Une des principales différences entre les objets et les primitifs est qu'ils peuvent être stockés et copiés par référence.
Vous pouvez assigner/copier des valeurs primitives (chaînes, nombres, booléens) comme valeur entière. Jetez un œil à cet exemple:
En conséquence, vous aurez deux variables indépendantes; chacune d'elles stockera la chaîne “Welcome to W3Docs!”.
Les objets ne fonctionnent pas comme ça.
Une variable stockera non l'objet mais son “adresse en mémoire”. En d'autres termes, elle ne stocke qu'une référence à celui-ci.
Par exemple:
Où se trouve l'objet dans la mémoire, et la variable car contains une référence à celle-ci. Chaque fois que vous copiez une variable d'objet, vous dupliquez la référence, mais l'objet n'est pas copié.
Par exemple:
Comparaison par référence
En JavaScript, deux objets peuvent être considérés égaux uniquement s'ils sont le même objet.
Par exemple, deux variables sont égales lorsqu'elles se réfèrent au même objet:
Dans le cas suivant, les deux objets indépendants ne peuvent pas être considérés comme égaux, même s'ils sont tous les deux vides:
Objet const
Un objet qui est proclamé const peut être modifié. Voici un exemple:
Vous pouvez penser que le (*) donnera une erreur, mais il n'y a pas d'erreur ici. Vous vous demanderez pourquoi. La raison est que const peut seulement fixer la valeur de car. Il ne provoquera une erreur qu'en essayant de fixer car à quelque chose d'autre comme ceci:
Clone et fusion, Object.assign
Copier une variable objet signifie créer une autre référence au même objet.
Mais que faire lorsque vous avez besoin de doubler l'objet?
Bien sûr, vous pouvez le cloner, mais ce n'est pas une tâche facile, car JavaScript n'a pas de méthode intégrée. Ainsi, chaque fois que vous en avez besoin, créez un nouvel objet reproduisant sa structure et itérant sur les propriétés et copiez-les au niveau primitif. L'exemple est le suivant:
La méthode Object.assign est également utilisée pour cela. Vous avez juste besoin d'utiliser la syntaxe suivante:
Object.assign(dest, [src1, src2, src3...])
Elle peut aussi être utilisée pour fusionner plusieurs objets:
En JavaScript, les objets sont beaucoup plus puissants qu'il n'y paraît à première vue. C'est un vaste sujet, et vous en apprendrez plus à ce sujet dans les prochains chapitres.
Heure du Quiz : Testez Vos Compétences!
Prêt à relever le défi de ce que vous avez appris ? Plongez dans nos quiz interactifs pour approfondir votre compréhension et renforcer vos connaissances de manière ludique.