Hvordan kontrollerer jeg, om et objekt har en bestemt egenskab i JavaScript?
Overvej:
x = {'key': 1};
if ( x.hasOwnProperty('key') ) {
//Do this
}
Er det den bedste måde at gøre det på?
if (x.key !== undefined)
Armin Ronacher synes allerede at have været mig i forkøbet, men:
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!');
}
En mere sikker, men langsommere løsning, som [Konrad Rudolph][4] og [Armin Ronacher][1] har påpeget, ville være:
Object.prototype.hasOwnProperty = function(property) {
return typeof this[property] !== 'undefined';
};
Ja, det er det :) Jeg tror også du kan lave Object.prototype.hasOwnProperty.call(x, 'key')
hvilket også burde virke hvis x
har en egenskab der hedder hasOwnProperty
:)
Men det tester for egne egenskaber. Hvis du vil tjekke om den har en egenskab der også kan være arvet kan du bruge typeof x.foo != 'undefined'
.
OK, det ser ud til, at jeg havde det rigtige svar, medmindre du ikke ønsker arvede egenskaber:
if (x.hasOwnProperty('key'))
Her er nogle andre muligheder for at inkludere arvede egenskaber:
if (x.key) // Quick and dirty, but it does the same thing as below.
if (x.key !== undefined)