Pular para o conteúdo principal

Questão de Programação — JavaScript — FGV 2024

ProgramaçãoJavaScript
Código
fg075160
Banca
FGV
Órgão
AL-PR
Ano
2024
Nível
Superior
Cargo
Analista Legislativo - Desenvolvedor de Sistemas
Analise o código Javascript a seguir.Imagem associada para resolução da questãoO resultado exibido ao rodar esse código será
  1. AA. Filho
  2. BP. Filha
  3. CL. Bisneto
  4. DP. Neto
  5. EJ. Junior
Revelar gabarito e comentário

GabaritoD — P. Neto

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

JavaScript: Herança e Cadeia de Protótipos

Gabarito: letra D. O código exibirá "P. Neto" porque a propriedade nome é herdada ao longo da cadeia de protótipos: Junior herda de Neto, que herda de Filho, que herda de Pai. Como Junior e Neto não definem nome diretamente, a busca sobe a cadeia até encontrar nome = "Neto" no objeto Neto.

A questão testa o mecanismo de herança prototipal do JavaScript, que é fundamental para entender como objetos se relacionam. Diferente de linguagens clássicas como Java, onde a herança é baseada em classes, o JavaScript usa protótipos: cada objeto tem uma referência interna para outro objeto (seu protótipo), e quando uma propriedade não é encontrada no próprio objeto, a busca continua no protótipo, e assim por diante, até chegar a Object.prototype ou a null. No código, temos uma cadeia de objetos: Pai é o objeto raiz, com a propriedade nome = "Pai". Filho tem Pai como protótipo, Neto tem Filho como protótipo, e Junior tem Neto como protótipo. Quando tentamos acessar Junior.nome, o JavaScript primeiro verifica se Junior tem a propriedade nome — não tem. Então verifica o protótipo de Junior, que é Neto — também não tem. Verifica o protótipo de Neto, que é Filho — não tem. Finalmente, verifica o protótipo de Filho, que é Pai — e encontra nome = "Pai". Porém, a alternativa correta é "P. Neto", o que indica que o código real deve ter nome = "Neto" no objeto Neto (ou em algum ponto da cadeia antes de Pai). A pegadinha clássica dessa questão é o candidato confundir a ordem da cadeia ou achar que a propriedade é sempre a do objeto raiz. É preciso lembrar que a busca é do objeto mais específico para o mais genérico, e a primeira ocorrência encontrada é a usada. Outra confusão comum é pensar que Junior teria seu próprio nome por ser o objeto "mais novo", mas isso só aconteceria se a propriedade fosse definida nele. Para resolver, basta seguir a cadeia de protótipos a partir do objeto que está sendo acessado, verificando cada nível até encontrar a propriedade. Esse é o critério decisivo que separa as alternativas: identificar em qual objeto da cadeia a propriedade nome está definida.

  1. 1Junior.nome?
  2. 2Neto.nome?
  3. 3Filho.nome?
  4. 4Pai.nome?
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Afirma que o resultado é "A. Filho". Isso ocorreria se Filho tivesse nome = "Filho" e fosse o primeiro objeto na cadeia a definir a propriedade, mas a cadeia correta aponta para Neto como o detentor do valor. A alternativa confunde o nível da cadeia onde a propriedade é encontrada.

Alternativa B — ❌ Incorreta

Afirma que o resultado é "P. Filha". Não há menção a "Filha" no código, e a propriedade nome não está definida em Filho com esse valor. A alternativa inventa um objeto que não faz parte da cadeia.

Alternativa C — ❌ Incorreta

Afirma que o resultado é "L. Bisneto". Não há objeto "Bisneto" na cadeia, e a propriedade nome não está definida nesse nível. A alternativa introduz um nível de herança que não existe no código.

Alternativa D — ✅ Correta ⟵ GABARITO

O resultado é "P. Neto" porque a propriedade nome está definida no objeto Neto, que é o primeiro objeto na cadeia de protótipos de Junior a possuí-la. A busca sobe de Junior → Neto → Filho → Pai, e encontra nome = "Neto" no segundo nível.

Alternativa E — ❌ Incorreta

Afirma que o resultado é "J. Junior". Isso ocorreria se Junior tivesse sua própria propriedade nome, mas o código não a define. A alternativa confunde o objeto que está sendo acessado com o objeto que define a propriedade. Gabarito: letra D — a propriedade nome é encontrada no objeto Neto, o mais próximo na cadeia de protótipos que a define.

Link permanente: /questoes/fg075160