From d192fb918b0e2aa8869de6dcc59de8464b6e879a Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Fri, 11 Dec 2020 18:59:39 -0500 Subject: dump 2020-12-11 --- .../javascript/objetos/b\303\241sico/index.html" | 56 ++++++++++++---------- 1 file changed, 30 insertions(+), 26 deletions(-) (limited to 'files/pt-br/aprender/javascript/objetos/básico/index.html') diff --git "a/files/pt-br/aprender/javascript/objetos/b\303\241sico/index.html" "b/files/pt-br/aprender/javascript/objetos/b\303\241sico/index.html" index 613a694750..ef9cb18c95 100644 --- "a/files/pt-br/aprender/javascript/objetos/b\303\241sico/index.html" +++ "b/files/pt-br/aprender/javascript/objetos/b\303\241sico/index.html" @@ -30,15 +30,15 @@ translation_of: Learn/JavaScript/Objects/Basics

Como acontece com muitas coisas em JavaScript, a criação de um objeto geralmente começa com a definição e a inicialização de uma variável. Tente digitar o código a seguir no arquivo que você baixou, salve e atualize:

-
var pessoa = {};
+
var pessoa = {};

Se você inserir pessoa no seu console JS e pressionar o botão, deverá obter o seguinte resultado:

-
[object Object]
+
[object Object]

Parabéns, você acabou de criar seu primeiro objeto. Tarefa concluída! Mas este é um objeto vazio, então não podemos fazer muita coisa com isso. Vamos atualizar nosso objeto para ficar assim:

-
var pessoa = {
+
var pessoa = {
   nome: ['Bob', 'Smith'],
   idade: 32,
   sexo: 'masculino',
@@ -54,7 +54,7 @@ translation_of: Learn/JavaScript/Objects/Basics
 
 

Depois de salvar e atualizar, tente inserir alguns dos itens a seguir no console JavaScript no devtools do seu navegador:

-
pessoa.nome
+
pessoa.nome
 pessoa.nome[0]
 pessoa.idade
 pessoa.interesses[1]
@@ -69,7 +69,7 @@ pessoa.saudacao()

Então, o que está acontecendo? Bem, um objeto é composto de vários membros, cada um  com um nome (ex.: nome e idade vistos acima), e um valor (ex.: ['Bob', 'Smith'] e 32). Cada par nome/valor deve ser separado por uma vírgula e o nome e valor, em cada caso, separados por dois pontos. A sintaxe sempre segue esse padrão:

-
var nomeDoObjeto = {
+
var nomeDoObjeto = {
   nomeMembro1: valorMembro1,
   nomeMembro2: valorMembro2,
   nomeMembro3: valorMembro3
@@ -85,7 +85,7 @@ pessoa.saudacao()

Acima, você acessou as propriedades de objetos e métodos usando notação de ponto. O objeto nome (pessoa) atua como namespace (espaço de nomes) — ele deve ser digitado primeiro para que você acesse qualquer coisa encapsulada dentro do objeto. Depois você escreve um ponto, então o item que quer acessar — isso pode ser o nome de uma simples propriedade, um item de um array ou a chamada para um dos métodos do objeto, por exemplo: 

-
pessoa.idade
+
pessoa.idade
 pessoa.interesse[1]
 pessoa.bio()
@@ -93,28 +93,28 @@ pessoa.bio()

É até possível fazer o valor de um membro de um objeto ser outro objeto. Por exemplo, tente alterar o nome do membro de:

-
nome: ['Bob', 'Smith'],
+
nome: ['Bob', 'Smith'],

para

-
nome : {
+
nome : {
   primeiro: 'Bob',
   ultimo: 'Smith'
 },

Aqui estamos efetivamente criando um sub-namespace. Parece difícil, mas não é — para acessar esses itens você apenas precisa encadear mais um passo ao final de outro ponto. Tente isso aqui no console:

-
pessoa.nome.primeiro
+
pessoa.nome.primeiro
 pessoa.nome.ultimo

Importante: Nesse ponto você também precisará revisar seus métodos e mudar quaisquer instâncias de

-
nome[0]
+
nome[0]
 nome[1]

para

-
nome.primeiro
+
nome.primeiro
 nome.ultimo

Caso contrário seus métodos não funcionarão.

@@ -123,12 +123,12 @@ nome.ultimo

Há outra forma de acessar propriedades do objeto — usando notação de colchetes. Ao invés desses:

-
pessoa.idade
+
pessoa.idade
 pessoa.nome.primeiro

Você pode usar:

-
pessoa['idade']
+
pessoa['idade']
 pessoa['nome']['primeiro']

Fica muito parecido com a maneira que acessamos itens de um array, e é basicamente a mesma coisa, só que ao invés de usarmos um número de índice para selecionar um item, usamos o nome associado a cada valor. Não é por menos que objetos às vezes são chamados de arrays associativos — eles mapeiam strings a valores do mesmo modo que arrays mapeiam números a valores.

@@ -137,42 +137,42 @@ pessoa['nome']['primeiro']

Até agora nós apenas procuramos receber (ou apanhar) membros de objetos — podemos também setar (atualizar) o valor de membros de objetos simplesmente declarando o membro que queremos setar (usando notação de ponto ou colchete), tipo assim:

-
pessoa.idade = 45;
+
pessoa.idade = 45;
 pessoa['nome']['ultimo'] = 'Cratchit';

Tente escrever as linhas acima e então apanhar seus membros novamente para ver como mudaram. Assim:

-
pessoa.idade
+
pessoa.idade
 pessoa['nome']['ultimo']

Não podemos apenas atualizar valores existentes de propriedades e métodos; podemos também criar membros completamente novos. Tente isso aqui no console:

-
pessoa['olhos'] = 'castanho'.
+
pessoa['olhos'] = 'castanho'.
 pessoa.despedida = function() { alert( "Adeus a todos!" ); }

Podemos testar nossos novos membros:

-
pessoa['olhos'];
+
pessoa['olhos'];
 pessoa.despedida();

Um aspecto útil de notação de colchetes é que ela pode ser usadada não apenas para setar valores dinamicamente, mas também nomes de membros. Vamos dizer que queremos que usuários possam armazenar tipos de valores personalizados em seus dados de 'pessoa', digitando o nome e o valor do membro em dois inputs de texto. Podemos obter esses valores dessa forma:

-
var myDataName = nameInput.value;
+
var myDataName = nameInput.value;
 var myDataValue = nameValue.value;

Podemos, então, adicionar esse novo nome e valor ao objeto pessoa assim:

-
pessoa[myDataName] = myDataValue;
+
pessoa[myDataName] = myDataValue;

Para testar isso, tente adicionar as seguinte linhas em seu código, abaixo do fechamento da chaves do objeto pessoa :

-
var myDataName = 'altura';
+
var myDataName = 'altura';
 var myDataValue = '1.75m';
 pessoa[myDataName] = myDataValue;

Agora tente salvar e atualizar, entrando o seguinte no seu input de texto:

-
pessoa.altura
+
pessoa.altura

Adicionar uma propriedade a um objeto usando o método acima não é possível com a notação ponto, que só aceita um nome de membro literal, não aceita valor de variável apontando para um nome.

@@ -180,7 +180,7 @@ pessoa[myDataName] = myDataValue;

Você pode ter reparado algo levemente estranho em nossos métodos. Olhe esse aqui, por exemplo:

-
saudacao: function(){
+
saudacao: function(){
   alert("Oi! Meu nome é " + this.nome.primeiro + ".");
 }
@@ -188,7 +188,7 @@ pessoa[myDataName] = myDataValue;

Vamos ilustrar o que queremos dizer com um par de objetos pessoa:

-
var pessoa1 = {
+
var pessoa1 = {
   nome: 'Chris',
   saudacao: function() {
     alert('Oi! Meu nome é ' + this.nome + '.');
@@ -210,13 +210,13 @@ var pessoa2 = {
 
 

Então quando usamos métodos de strings como:

-
minhaString.split(',');
+
minhaString.split(',');

Estamos usando um método disponível na instância da class String. Toda vez que você cria uma string em seu código, essa string é automaticamente criada como uma instância de String, e, portanto, possui vários métodos e propriedades comuns que estão disponíveis para ela.

Quando você acessa o document object model usando linhas como estas:

-
var minhaDiv = document.createElement('div');
+
var minhaDiv = document.createElement('div');
 var meuVideo = document.querySelector('video');

Você está usando métodos disponíveis na instância da class Document. Cada vez que a página é recarrecada, uma instância de Document é criada, chamando document, que representa a estrutura inteira da página, conteúdo e outros recursos como sua URL. Novamente, isso significa que ela tem vários métodos e propriedades disponíveis nela.

@@ -225,7 +225,7 @@ var meuVideo = document.querySelector('video');

Note que Objetos/APIs embutidos nem sempre criam instâncias de objetos automaticamente. Por exemplo, a API de Notificações — que permite que navegadores modernos disparem notificações de sistema — requerem que você inicialize uma nova instância de objeto usando o construtor para cada notificação que queira disparar. Tente entrar o seguinte no seu console Javascript:

-
var minhaNotificacao = new Notification('Hello!');
+
var minhaNotificacao = new Notification('Hello!');

Novamente, olharemos constructores num artigo mais na frente.

@@ -233,6 +233,10 @@ var meuVideo = document.querySelector('video');

Nota: É útil pensar sobre como os objetos se comunicam passando mensagens - quando um objeto precisa de outro objeto para realizar algum tipo de ação, ele freqüentemente enviará uma mensagem para outro objeto através de um de seus métodos e aguardará uma resposta, que reconhecemos como um valor de retorno.

+

Teste suas habilidades !

+ +

Você chegou ao fim desse artigo,entretanto você consegue lembrar as informações mais importantes? Você pode encontrar mais testes para verificar se você consolidou as informações antes que você siga adiante  — veja  Test your skills: Object basics.

+

Resumo

Parabéns, você chegou ao final de nosso primeiro artigo sobre objetos JS - agora você deve ter uma boa ideia de como trabalhar com objetos em Javascript - incluindo criar seus próprio objetos simples. Você também deve perceber que objetos são muito úteis como estruturas para armazenar dados e funcionalidades relacionadas - se tentar rastrear todas as propriedades e métodos do nosso objeto pessoa como variáveis e funções separadas, isso seria ineficiente e frustrante e correríamos o risco de termos outras variáveis e funções com o mesmo nome. Objetos nos permite manter informações guardadas em segurança em seus próprios pacotes, fora de perigo.

-- cgit v1.2.3-54-g00ecf