javascript - Acessar dados de um objeto js - Stack Overflow em Português
Tenho o seguinte objeto JS exibido pelo console.log
Só consigo acessar a propriedade status do objeto em si, mas preciso acessar a propriedade status que está dentro do objeto value e possui o valor 400, mas todos os tipos de assessores de propriedade que tento dão undefined quando tento ir além do primeiro status (de valor 0) apresentado. Alguém pode me ajudar? Gostaria de saber também qual o nome que se dá para essas propriedades "internas" do objeto?
perguntada 1/08/2018 às 20:17
Sergio PSergio P
Como você tentou? Pelo log, deve ser objeto.value.status. Talvez o problema não seja a forma de acesso, e sim o momento em que você tenta acessar esses dados (pode ser quecestja tentando acessar antes dos dados estarem disponíveis, caso venham por Ajax)
1/08/2018 às 20:26
Para acessar é o que o bfavarreto falou, já com relação ao nome sua pergunta é a resposta, tanto que o método para retornar as nome das propriedades interna é Object.getOwnPropertyNames() sao propriedades não?
1/08/2018 às 20:36
Realmente se trata de uma requisição ajax feita por uma função Restangular.all, talvez seja a questão de os dados não estarem disponíveis a tempo. Estou tentando com object.value.status mas recebo undefined ou Tried to load AngularJS more than once
– Sergio P
1/08/2018 às 21:11
Coloque na pergunta o trecho de código que faz a requisição, e o trecho que tenta tratar a resposta.
1/08/2018 às 21:13
Como o bfavaretto disse veja o momento que está acessando os dados, pois pode ainda não estar disponível, mas a sintaxe é esta como no exemplo. Você tem um objeto dados, que para acessar qualquer uma das suas propriedades basta colocar o . antes da propriedade. No seu caso aí pela imagem não tem nenhum array senão você teria que acessar o índice da propriedade para pegar seu valor:
headers: "bla-bla-bla"
console.log(dados.status +" - "+ dados.value.status );
respondida 1/08/2018 às 20:37
Repara na saída do console que a pergunta mostra. Parece que o valor de status era 0 no momento do log, e 2 no momento em que ele expandiu o objeto. Tá com muita cara de o problema ser outro: tentar acessar dado de operação assíncrona antes de ele estar disponível.
Sim, verdade. Provavelmente o problema era este mesmo.
1/08/2018 às 21:21
Pessoal, optamos por alterar o backend que o verdadeiro causador do problema que está ocorrendo ao lançar uma exceção indevida, a tentativa no JS era mais uma tentativa de resolver na gambiarra do que de resolver de fato o problema.