Les littéraux d'objet sont un élément fondamental de JavaScript, nous permettant de créer et d'initialiser des objets rapidement. Avec ES6 et versions ultérieures, JavaScript a introduit plusieurs améliorations des littéraux d'objet, les rendant encore plus puissants et concis. Examinons ces améliorations et voyons comment elles peuvent rendre notre code plus propre et plus efficace.
Lors de la création d'un objet, si le nom de la propriété est le même que le nom de la variable que vous lui attribuez, vous pouvez utiliser une syntaxe abrégée.
const name = 'John'; const age = 30; // Old way const person = { name: name, age: age }; // New way const person = { name, age }; console.log(person); // { name: 'John', age: 30 }
Cette syntaxe abrégée réduit les répétitions et rend notre code plus concis.
Documentation MDN : initialiseur d'objet
De même, lors de la définition de méthodes dans un objet, nous pouvons omettre le mot-clé function et les deux-points.
// Old way const calculator = { add: function(a, b) { return a b; } }; // New way const calculator = { add(a, b) { return a b; } }; console.log(calculator.add(5, 3)); // 8
Cette syntaxe est plus claire et plus facile à lire, surtout lorsque vous avez plusieurs méthodes dans un objet.
Documentation MDN : définitions de méthodes
ES6 nous permet d'utiliser des expressions pour calculer les noms de propriétés. Ceci est particulièrement utile lorsque vous souhaitez créer des noms de propriétés dynamiques.
const prefix = 'user_'; const id = 1234; const user = { [`${prefix}${id}`]: 'John Doe' }; console.log(user.user_1234); // 'John Doe'
Cette fonctionnalité est puissante lorsque vous devez créer des objets avec des clés dynamiques basées sur une logique ou des données externes.
Documentation MDN : noms de propriétés calculés
ES6 a introduit une nouvelle façon de définir des méthodes dans les littéraux d'objet à l'aide des mots-clés get et set. Cela vous permet de créer des propriétés calculées sans appeler explicitement une fonction.
const person = { firstName: 'John', lastName: 'Doe', get fullName() { return `${this.firstName} ${this.lastName}`; }, set fullName(name) { [this.firstName, this.lastName] = name.split(' '); } }; console.log(person.fullName); // 'John Doe' person.fullName = 'Jane Smith'; console.log(person.firstName); // 'Jane' console.log(person.lastName); // 'Smith'
Les getters et setters fournissent un moyen simple de définir des propriétés calculées et peuvent être utilisés pour ajouter une validation ou des effets secondaires lors de l'obtention ou de la définition de valeurs.
Documentation MDN : Getter et Setter
Bien qu'il ne fasse pas strictement partie de l'amélioration des littéraux d'objet, l'opérateur de propagation (...) est une fonctionnalité puissante qui fonctionne bien avec les littéraux d'objet. Il vous permet de cloner facilement des objets ou de fusionner plusieurs objets.
const defaults = { theme: 'light', fontSize: 14 }; const userPreferences = { fontSize: 16 }; const settings = { ...defaults, ...userPreferences }; console.log(settings); // { theme: 'light', fontSize: 16 }
L'opérateur spread facilite la création de nouveaux objets basés sur ceux existants, ce qui est particulièrement utile pour maintenir l'immuabilité dans vos applications.
Documentation MDN : Syntaxe de diffusion (...)
Ces améliorations du littéral d'objet dans JavaScript offrent aux développeurs des moyens plus expressifs et concis de travailler avec des objets. En tirant parti de ces fonctionnalités, vous pouvez écrire un code plus propre, plus lisible et plus facile à maintenir.
N'oubliez pas que même si ces fonctionnalités sont puissantes, il est important de les utiliser judicieusement. Privilégiez toujours la lisibilité et la maintenabilité du code plutôt que la brièveté.
Voici un aperçu rapide de la prise en charge par le navigateur de ces fonctionnalités :
Fonctionnalité | Chrome | Firefox | Safari | Bord |
---|---|---|---|---|
Propriétés abrégées | 43 | 33 | 9 | 12 |
Méthodes abrégées | 43 | 34 | 9 | 12 |
Noms de propriétés calculés | 43 | 34 | 8 | 12 |
Méthodes Getter/Setter | 1 | 1,5 | 3 | 12 |
Propagation d'objet | 60 | 55 | 11.1 | 79 |
Bien que ces améliorations n'aient généralement pas d'implications significatives en termes de performances, l'opérateur de répartition d'objets peut être moins efficace que Object.assign() pour fusionner de nombreuses propriétés. Dans la plupart des cas d'utilisation, l'avantage en matière de lisibilité l'emporte sur les différences mineures de performances.
Pour améliorer davantage votre compréhension de la manipulation d'objets JavaScript modernes, envisagez d'explorer :
En maîtrisant ces améliorations du littéral objet et les fonctionnalités associées, vous serez bien équipé pour écrire du code JavaScript plus élégant et plus efficace.
Si vous trouvez cet article utile, cliquez sur le bouton Suivre pour obtenir plus de mises à jour et de ressources utiles sur JavaScript, Reactjs et Next.js. Vous pouvez également me suivre sur Twitter @OgDev-01 pour obtenir des ressources utiles et des tendances technologiques ou sur OpenSauced pour voir quelles contributions j'ai apportées et celles que je mets en avant !
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3