Literais de objetos são uma parte fundamental do JavaScript, permitindo-nos criar e inicializar objetos rapidamente. Com o ES6 e posteriores, o JavaScript introduziu diversas melhorias nos literais de objetos, tornando-os ainda mais poderosos e concisos. Vamos mergulhar nessas melhorias e ver como elas podem tornar nosso código mais limpo e eficiente.
Ao criar um objeto, se o nome da propriedade for igual ao nome da variável que você está atribuindo a ele, você pode usar uma sintaxe abreviada.
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 }
Essa sintaxe abreviada reduz a repetição e torna nosso código mais conciso.
Documentação MDN: Inicializador de objeto
Da mesma forma, ao definir métodos em um objeto, podemos omitir a palavra-chave da função e os dois pontos.
// 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
Esta sintaxe é mais limpa e fácil de ler, especialmente quando você tem vários métodos em um objeto.
Documentação MDN: definições de métodos
ES6 nos permite usar expressões para calcular nomes de propriedades. Isto é particularmente útil quando você deseja criar nomes de propriedades dinâmicas.
const prefix = 'user_'; const id = 1234; const user = { [`${prefix}${id}`]: 'John Doe' }; console.log(user.user_1234); // 'John Doe'
Este recurso é poderoso quando você precisa criar objetos com chaves dinâmicas baseadas em alguma lógica ou dados externos.
Documentação MDN: Nomes de propriedades computados
ES6 introduziu uma nova maneira de definir métodos em literais de objetos usando as palavras-chave get e set. Isso permite que você crie propriedades computadas sem chamar explicitamente uma função.
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'
Getters e setters fornecem uma maneira limpa de definir propriedades computadas e podem ser usados para adicionar validação ou efeitos colaterais ao obter ou definir valores.
Documentação MDN: Getter e Setter
Embora não seja estritamente parte do aprimoramento literal de objeto, o operador spread (...) é um recurso poderoso que funciona bem com literais de objeto. Ele permite clonar objetos facilmente ou mesclar vários objetos.
const defaults = { theme: 'light', fontSize: 14 }; const userPreferences = { fontSize: 16 }; const settings = { ...defaults, ...userPreferences }; console.log(settings); // { theme: 'light', fontSize: 16 }
O operador spread facilita a criação de novos objetos com base nos existentes, o que é particularmente útil para manter a imutabilidade em seus aplicativos.
Documentação MDN: Sintaxe de propagação (...)
Esses aprimoramentos literais de objetos em JavaScript fornecem aos desenvolvedores maneiras mais expressivas e concisas de trabalhar com objetos. Ao aproveitar esses recursos, você pode escrever um código mais limpo, mais legível e mais fácil de manter.
Lembre-se de que, embora esses recursos sejam poderosos, é importante usá-los criteriosamente. Sempre priorize a legibilidade e a manutenção do código em vez da brevidade.
Aqui está uma rápida visão geral do suporte do navegador para estes recursos:
Recurso | Cromo | Firefox | Safári | Borda |
---|---|---|---|---|
Propriedades de taquigrafia | 43 | 33 | 9 | 12 |
Métodos de taquigrafia | 43 | 34 | 9 | 12 |
Nomes de propriedades computados | 43 | 34 | 8 | 12 |
Métodos getter/setter | 1 | 1,5 | 3 | 12 |
Distribuição de objeto | 60 | 55 | 11.1 | 79 |
Embora essas melhorias geralmente não tenham implicações significativas no desempenho, o operador de propagação de objetos pode ser menos eficiente que Object.assign() para mesclar muitas propriedades. Na maioria dos casos de uso, o benefício de legibilidade supera quaisquer pequenas diferenças de desempenho.
Para aprimorar ainda mais sua compreensão da manipulação moderna de objetos JavaScript, considere explorar:
Ao dominar esses aprimoramentos literais de objetos e recursos relacionados, você estará bem equipado para escrever código JavaScript mais elegante e eficiente.
Se você achar este artigo útil, clique no botão Seguir para obter mais atualizações e recursos úteis sobre JavaScript, Reactjs e Next.js. Você também pode me seguir no Twitter @OgDev-01 para obter recursos úteis e tendências tecnológicas ou no OpenSauced para ver quais contribuições tenho feito e as que destaco!
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3