Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Sintaxe []

Olá!

No código abaixo (simular ao da aula):

const campoValor = this.validacao.campo.toString();
const metodoValidacao = this.validacao.metodo;
console.log(campoValor, metodoValidacao); // retorna nome e isEmpty

Ele retorna no console o valor das chaves campo e método, argumentos do FormValidator:

new FormValidator({
    campo: 'nome',
    metodo: 'isEmpty'
})

Mas se fizermos assim:

const campoValor = state[this.validacao.campo.toString()];
console.log(campoValor);  //retorna o valor digitado no input name nome

Ele retorna o valor digitado no input name nome.

E assim:

const metodoValidacao = validador[this.validacao.metodo];
console.log(metodoValidacao); //retorna a escrita da função isEmpty do módulo validator

Ele retorna a escrita da função isEmpty do módulo validator.

Eu imaginei que só era possível colocar números dentro dos colchetes em arrays, como no exemplo:

let array = ['alura', 'react'];
console.log(array[0]); //retorna 'alura';

Mas desconheço essa sintaxe mostrada na aula, onde um valor diferente de um número dentro dos colchetes, retorna o valor de uma chave de um objeto javascript. Eu procurei no google sobre esse tipo de estrutura e devo estar me expressando mal, porque não acho nada. Tento reproduzir o resultado em códigos de treino, mas não consigo também. Gostaria de encontrar uma documentação ou uma explicação sobre isso.

Alguém pode me ajudar?

3 respostas
solução!

Fala ai Renato, tudo bem? Vamos lá:

Eu imaginei que só era possível colocar números dentro dos colchetes em arrays, como no exemplo:

Falando especificamente sobre array, realmente a gente somente consegue passar números.

Mas desconheço essa sintaxe mostrada na aula, onde um valor diferente de um número dentro dos colchetes, retorna o valor de uma chave de um objeto javascript. Eu procurei no google sobre esse tipo de estrutura e devo estar me expressando mal, porque não acho nada. Tento reproduzir o resultado em códigos de treino, mas não consigo também. Gostaria de encontrar uma documentação ou uma explicação sobre isso.

O que está acontecendo nesse caso, é acesso à propriedades X de objetos.

Imagine o seguinte objeto:

const o = {
    nome: 'Matheus'
}

Como podemos acessar o valor da propriedade nome? Isso pode ser feito via dot notation (notação de ponto) ou bracket notation (notação de colchete).

Exemplo via dot notation:

const o = {
    nome: 'Matheus'
}
console.log(o.nome)

Exemplo via bracket notation:

const o = {
    nome: 'Matheus'
}
console.log(o['nome'])

Geralmente, usamos mais a dot notation, mas, caso precisamos acessar alguma propriedade através de variáveis (que é o seu caso), então a gente precisa utilizar a bracket notation:

const o = {
    nome: 'Matheus'
}
const propriedade = 'nome'

console.log(o[propriedade])

A ideia é basicamente essa.

Espero ter ajudado.

Muito obrigado Matheus! Eu nunca havia visto a bracket notation em um código! Valeu mesmo!

Magina Renato, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.