Variáveis do tipo Object em javascript
Tags: javascript
Published: 2020-02-25 16:43:28

Estamos de volta, agora falando do tipo de variável, o Object.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/1m3uxx6cxdoqbt6rzuwk.gif)

O object é uma coleção de dados que permite o registro de atributos e propriedades que tem algum tipo de relacionamento entre si.

Vamos declarar nosso primeiro objeto chamado pessoas:


![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/1hsvk91142n9uey4q6uz.PNG)


Como os outros tipos de variáveis que já vimos, podemos manipular os objects também.
Podemos alterar alguma dos atributo de dentro do objeto. Vamos chamar nosso objeto e checar a atributo name: 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/1dq1edeajdgxvl551z58.PNG)

Para atribuir um novo valor ao atributo 'name' do nosso objeto podemos chamar o nosso objeto 'pessoa' e instânciar ao atributo nome(para instanciar devemos digitar o nome do nosso objeto 'pessoa' e colocar um '.' seguido do atributo) e atribuir um novo valor:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/orqwk8wswnhijlbpzmy4.PNG)

Existe um outro meio de trocamos o valor do atributo, seguindo a estrutura de Array(veremos o que é um array futuramente ok):

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/glweuopbfzllxgighagg.PNG)

Podemos criar uma nova variável que recebe o atributo 'name':

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/0c1cxz6ciudgmsu8163j.PNG)

e alterar o nome através dessa nova variável que criamos também:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/5trqteci4gy9ozwrdios.PNG)

E se eu quiser acrescentar mais um atributo no nosso objeto, é possível?
Sim sim, basta chamarmos  nosso objeto e já instanciar nosso novo atributo, é bem simples:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/fh0kvc0s5jw4bq2i8n64.PNG)

Amanda, e se eu quiser excluir um atributo, será que eu consigo? Anhãn, vamos ver como é?
De princípio nosso objeto tem os atributos name, idade e lastName. Vamos deletar o atributo idade ok? 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/75p0rystpcnapfj2sviz.PNG)

__Funções em Object__

Agora vamos ver as possíveis funções existentes do object.

A função 'keys' permite que sejam exibidas todas os atributos do nosso objeto. Vamos utilizar o console.log para exibir nossa função:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/bvyx6ty1gg1gghg46gz4.PNG)

E se eu quiser exibir os atributos e seus conteúdos? Usamos a função 'entries':

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/fkbaruhl51ma5o2hzpuy.PNG)

Podemos inserir outro atributo e já imprimir o objeto completo com a função Object.assign:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/b5amko888mlylrf4kt6h.PNG)

Existe uma função que se chama freeze, que literalmente congela o objeto.
Vamos declarar um novo objeto e chamar o freeze:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/337gdkawfx1v4zi4353b.PNG)

Agora o atributo name está congelado com o nome 'Lívia'. Vamos tentar realizar algumas alterações no objeto e ver o que acontece chamando o mesmo após essas manipulações:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/o44kliptlob7i0n3aehm.PNG)

Como você pode ver, não acontece nada com o nosso objeto, porque chamamos o Object.freeze e 'congelamos' o mesmo.
Para finalizar, vamos falar da função 'seal'. A função seal também 'congela' o objeto, mas em partes.
Vamos declarar mais um objeto pessoa e chamar a função Object.seal:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/t5n08dzxgjl8owfvxi41.PNG)

Agora vamos executar algumas manipulações com esse objeto e ver o que acontece:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/qwxj3b0qn4wz3p263ol8.PNG)

Observe que ao tentar deletar, o retorno foi false, o que significa que nós conseguimos alterar o atributo nome, mas não conseguimos exlcuir. É isso que o 'seal' faz, pega nosso objeto e só permite alterações nos atributos já existentes.
Vamos tentar inserir mais um atributo no nosso objeto:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/hpbpfazlmwqyc29z7inx.PNG)

Viu, não acontece nada. Tentamos inserir o atributo idade, mas nosso objeto está congelado parcialmente com a função 'seal' e não poermitiu essa inserção.

Bom por hoje é só, espero que estejam gostando. Tem algo que quer acrescentar, ou até corrigir? É só deixar seu recadinho. Até mais...

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/2o72r0dt20immyhsf3as.gif)