Get to know MDN better
Esta página foi traduzida do inglês pela comunidade. Saiba mais e junte-se à comunidade MDN Web Docs.
This feature is well established and works across many devices and browser versions. It’s been available across browsers since julho de 2015.
Objetos podem ser inicializados utilizando new Object(), Object.create(), ou a notação literal. Um inicializador de objetos é uma lista de zero ou mais pares de propriedade: valor, separados por vírgula e fechado por um par de chaves ({}).
Por favor, verifique o suporte das anotações na tabela de compatibilidade. Em ambientes que não dão suporte às anotações, ocorrerá erros de sintaxe.
Um inicializador de objetos é uma expressão que descreve a inicialização de um Object. Objects consiste de propriedades, as quais descrevem um objeto. Os valores das propriedades de um objeto podem ser tipos de dados primitivos ou outros objetos .
Um objeto vazio, sem propriedades, pode ser criado como:
Contudo, a vantagem em utilizar a notação literal ou o inicializador é a possibilidade de rapidamente criar objetos com propriedades dentro de chaves ({}). Você simplesmente cria uma lista de pares chave: valor, separados por vírgula. O código abaixo cria um objeto com três propriedades, sendo as chaves "foo", "age" e "baz", com seus respectivos valores, tipo string de valor "bar", tipo number de valor 42 e, por último, um outro objeto com seus respectivos pares de chave: valor.
Uma vez que você criou um objeto, é interessante que possa ler ou alterá-lo. As propriedades de um objeto podem ser acessadas utilizando a notação de ponto ou colchetes. Veja assessores de propriedade para mais informações.
Nós temos aprendido como descrever propriedades utilizando a sintaxe inicializador. No entanto, às vezes, há variáveis que queremos inserir em nosso objeto. Então teremos um código parecido como abaixo:
Com ECMAScript 2015, há uma notação mais curta que possibilita atingir o mesmo resultado:
Quando se está utilizando o mesmo nome para suas propriedades, a última sobrescreverá as anteriores.
Em códigos ECMAScript 5 no modo estrito, duplicação em nomes de propriedades serão consideradas SyntaxError. Porém, com a introdução de "nomes de propriedades computadas", tornou-se possível a duplicação das propriedades em tempo de execução. Assim, ECMAScript 2015 removeu a restrição.
Uma propriedade de um objeto pode se referir à function, ou aos métodos getter ou setter.
No ECMAScript 2015, uma notação abreviada está disponível, dispensando o uso da palavra reservada "function".
Com ECMAScript 2015, há uma forma concisa em criar propriedades cujo valor é uma função gerador.
Mas em ECMAScript 5, você escreveria (lembrar que em ES5 não há geradores):
Para mais informações e exemplos, veja definições de método.
Começando com ECMAScript 2015, a sintaxe inicializador de objeto também suporta "nomes de propriedades computados". Isso permite que você possa inserir uma expressão dentro de colchetes [], que será computada como o nome de uma propriedade. Isto é semelhante à notação de chaves utilizado em acessor de propriedade, utilizado para ler a alterar as propriedades existentes em um objeto. Segue um exemplo utilizando a mesma sintaxe em objetos literais:
Uma definição de propriedade na forma de __proto__: valor or "__proto__": valor não cria uma propriedade com o nome __proto__. Inclusive, se o valor fornecido for um objeto ou null, muda o [[Prototype]] do objeto criado para o valor informado. (Se o valor fornecido não é um objeto ou null, o valor não será alterado.)
Apenas uma única mudança em prototype é permitida em um objeto: múltiplas mudanças gera erro de sintaxe.
Definições de propriedade que não utilizam da notação de ":", não são consideradas mudanças de prototype: são definições de propriedades que se comportam de forma semelhante às definições utilizando qualquer outro nome.
A notação de objeto literal não é a mesma de JavaScript Object Notation (JSON). Mesmo que possuam semelhanças, há as seguintes diferenças:
| ECMAScript® 2027 Language Specification # sec-object-initializer |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 17 de dez. de 2024 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.