"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Aumente o nível do seu JS: melhorias literais de objetos que mudarão seu código

Aumente o nível do seu JS: melhorias literais de objetos que mudarão seu código

Publicado em 2024-11-06
Navegar:859

Level Up Your JS: Object Literal Enhancements That Will Change Your Code

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.

1. Nomes de propriedades abreviados

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

2. Nomes abreviados de métodos

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

3. Nomes de propriedades computados

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

4. Propriedades do Método

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

5. Operador de propagação de objetos

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 (...)

Conclusã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.


Compatibilidade do navegador

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

Casos de uso prático

  1. Propriedades abreviadas: Ótimo para criar objetos a partir de variáveis ​​existentes, especialmente em adereços de componentes React.
  2. Métodos abreviados: Úteis em estruturas semelhantes a classes ou ao definir múltiplas funções relacionadas.
  3. Nomes de propriedades computadas: Ideal para criar chaves dinâmicas em objetos de internacionalização (i18n).
  4. Métodos Getter/Setter: Perfeito para criar propriedades "inteligentes" com validação integrada ou efeitos colaterais.
  5. Object Spread: Excelente para gerenciamento de estado em Redux ou para criação de novos objetos com pequenas modificações.

Considerações de desempenho

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.

Recursos relacionados

Para aprimorar ainda mais sua compreensão da manipulação moderna de objetos JavaScript, considere explorar:

  • Tarefa de desestruturação
  • Método Object.assign()
  • Métodos Object.entries(), Object.values() e Object.keys()
  • Os métodos Object.freeze() e Object.seal() para imutabilidade de objetos

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!

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/og_dev/level-up-your-js-object-literal-enhancements-that-will-change-your-code-jbc?1 Se houver alguma violação, por favor entre em contato com study_golang@163 .comdelete
Tutorial mais recente Mais>

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