Como posso verificar se um objeto tem uma propriedade específica em JavaScript?
Considere:
x = {'key': 1};
if ( x.hasOwnProperty('key') ) {
//Do this
}
Essa é a melhor maneira de o fazer?
if (x.key !== undefined)
Armin Ronacher parece que já me venceu, mas:
Object.prototype.hasOwnProperty = function(property) {
return this[property] !== undefined;
};
x = {'key': 1};
if (x.hasOwnProperty('key')) {
alert('have key!');
}
if (!x.hasOwnProperty('bar')) {
alert('no bar!');
}
Uma solução mais segura, mas mais lenta, como apontado por Konrad Rudolph e Armin Ronacher seria:
Object.prototype.hasOwnProperty = function(property) {
return typeof this[property] !== 'undefined';
};
Sim, é :) Eu acho que você também pode fazer Object.prototype.hasOwnProperty.call(x, 'key')
que também deve funcionar se x
tiver uma propriedade chamada hasOwnProperty
:)
Mas isso testa as próprias propriedades. Se você quiser verificar se ele tem uma propriedade que também pode ser herdada você pode usar typeof x.foo != 'undefined'
.
OK, parece que eu tinha a resposta certa, a menos que você não'não queira propriedades herdadas:
if (x.hasOwnProperty('key'))
Aqui estão algumas outras opções para incluir as propriedades herdadas:
if (x.key) // Quick and dirty, but it does the same thing as below.
if (x.key !== undefined)