Como verificar se objeto possui propriedade em JavaScript
Neste artigo você vai aprender a como verificar se objeto possui propriedade em JavaScript, de uma maneira super simples!

Fala programador(a), beleza? Bora aprender mais sobre objetos e também a linguagem JavaScript!
Para checara objetos podemos utilizar o operador in, ele serve para outros casos também
Mas para objetos é possível identificar se uma propriedade existe ou não no objeto
Adicionando uma estrutura de condição if, podemos validar o caso
Veja um exemplo prático do que foi explicado acima:
var obj = {
name: "Matheus",
age: 29
};
if('name' in obj) {
console.log("Existe!");
}
Neste caso o if é atestado como true, pois a propriedade name existe na variável obj
Então assim conseguimos validar se uma propriedade existe ou não em um objeto
Note que podemos adicionar um else e fazer uma outra continuação de código, caso a chave não exista
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 118 aulas
- 4 projetos
- 9h 33min
E desta forma conseguimos validar chaves em objetos de JavaScript!
Uma outra abordagem seria utilizar o método hasOwnProperty
Veja a sua aplicação na prática:
var obj = {
name: "Matheus",
age: 29
};
if(obj.hasOwnProperty('name')) {
console.log("Existe!");
}
Desta maneira obtemos o mesmo resultado, porém com uma outra abordagem!
Conclusão
Neste artigo você aprendeu a como verificar se objeto possui propriedade em JavaScript
Utilizamos o operador in, que pode ser utilizado entre chave e objeto
Atestando se uma propriedade existe ou não em um determinado objeto que está no nosso código
Podemos fazer a validação com um simples if/else
Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube
in ou hasOwnProperty: qual a diferença?
Os dois respondem a mesma pergunta, só que não olham pro mesmo lugar
O operador in procura a chave no objeto E em toda a cadeia de protótipos dele
Já o hasOwnProperty só enxerga o que é do PRÓPRIO objeto
Parece detalhe, mas muda o resultado:
var obj = {
name: "Matheus"
};
console.log('toString' in obj); // true
console.log(obj.hasOwnProperty('toString')); // false
"Que toString?" é um método que vem do protótipo (o Object.prototype), todo objeto herda ele sem você escrever uma linha sequer
Ou seja: o in diz que existe, porque existe sim, lá em cima na cadeia
E o hasOwnProperty diz que não, porque não é uma chave que você colocou no objeto
Regra de bolso: se a pergunta é "fui eu que defini essa chave?", vai de hasOwnProperty
Se tanto faz ser herdada ou não, o in resolve numa linha 🙂
Cuidado com a checagem por undefined:
Uma abordagem que aparece muito por aí é essa:
if(obj.name !== undefined) {
console.log("Existe!");
}
Funciona na maioria dos casos… mas tem uma armadilha
Se a propriedade existir e o valor dela for undefined, o teste jura que ela não existe:
var obj = {
name: undefined
};
console.log(obj.name !== undefined); // false
console.log('name' in obj); // true
A chave name está ali, você mesmo declarou ela
O que o !== undefined checa é o VALOR, não a existência da chave
Por isso, quando a pergunta é "essa propriedade existe?", o in e o hasOwnProperty são a resposta certa
Tome cuidado, esse é o tipo de bug que só aparece em produção 😛
E quando o hasOwnProperty quebra?
Aqui vai um detalhe que já me ferrou uma vez: hasOwnProperty é um método herdado, então ele pode ser sobrescrito
Se o objeto tiver uma chave chamada hasOwnProperty, a chamada direta explode:
var obj = {
hasOwnProperty: "opa"
};
obj.hasOwnProperty('name'); // TypeError: obj.hasOwnProperty is not a function
Caso este erro apareça, a saída é chamar o método direto do protótipo e passar o objeto:
Object.prototype.hasOwnProperty.call(obj, 'name');
Fica mais verboso, eu sei
Mas funciona até em objeto criado com Object.create(null), que nasce sem cadeia de protótipo nenhuma e por isso não tem hasOwnProperty pra chamar
Como verificar propriedade dentro de objeto aninhado:
O in checa um nível de cada vez, e aí mora o perigo
Se você pular direto pro nível de baixo, o JavaScript reclama:
var user = {
name: "Matheus"
};
'rua' in user.endereco; // TypeError: Cannot read properties of undefined
O endereco nem existe, então não tem objeto nenhum pra procurar a chave rua
A saída é validar de fora pra dentro, na mesma condição:
var user = {
name: "Matheus",
endereco: {
rua: "Rua das Flores"
}
};
if('endereco' in user && 'rua' in user.endereco) {
console.log("Existe!");
}
O && aqui é seu amigo: se a primeira checagem der false, a segunda nem roda
Bora testar com o endereco fora do objeto pra ver a diferença?
Qual usar em cada situação:
Pra não ficar na dúvida na hora de codar:
- in: quando serve qualquer propriedade, própria ou herdada do protótipo
- hasOwnProperty: quando você quer só o que foi definido naquele objeto
- Object.prototype.hasOwnProperty.call(obj, chave): quando o objeto vem de fora e você não confia no formato dele
- !== undefined: só quando a sua pergunta de verdade é sobre o VALOR, não sobre a chave existir
Uma coisa que não muda nada nessa história: a declaração
Os exemplos aqui usam var, e você vai ver muito código por aí com const no lugar
A checagem é idêntica nos dois casos:
const obj = {
name: "Matheus",
age: 29
};
if('name' in obj) {
console.log("Existe!");
}
O que decide o resultado é a chave estar no objeto, não como você declarou a variável
Leia também
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
As diferenças de var, let e const

Como redirecionar para outra página com JavaScript
Exercícios de lógica de programação JavaScript com gabarito
Quais são os melhores exercícios lógica de programação JavaScript? Colocar em prática os exercícios de lógica de programação em JavaScript é de extrema importância para […]
