Hvordan sjekker jeg om et objekt har en bestemt egenskap i JavaScript?
Tenk deg om:
x = {'key': 1};
if ( x.hasOwnProperty('key') ) {
//Do this
}
Er det den beste måten å gjøre det på?
if (x.key !== undefined)
Armin Ronacher ser ut til å allerede ha kommet meg i forkjøpet, 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 sikrere, men tregere løsning, som påpekt av Konrad Rudolph og Armin Ronacher ville være:
Object.prototype.hasOwnProperty = function(property) {
return typeof this[property] !== 'undefined';
};
Ja, det er det :) Jeg tror du også kan gjøre Object.prototype.hasOwnProperty.call(x, 'key')
som også skal fungere hvis x
har en egenskap som heter hasOwnProperty
:)
Men det tester for egne egenskaper. Hvis du vil sjekke om den har en egenskap som også kan arves, kan du bruke typeof x.foo != 'undefined'
.
OK, det ser ut til at jeg hadde riktig svar, med mindre du ikke vil ha arvede egenskaper:
if (x.hasOwnProperty('key'))
Her er noen andre alternativer for å inkludere arvede egenskaper:
if (x.key) // Quick and dirty, but it does the same thing as below.
if (x.key !== undefined)