JavaScript'te bir nesnenin belirli bir özelliğe sahip olup olmadığını nasıl kontrol edebilirim?
Bir düşünün:
x = {'key': 1};
if ( x.hasOwnProperty('key') ) {
//Do this
}
Bunu yapmanın en iyi yolu bu mu?
if (x.key !== undefined)
Armin Ronacher çoktan benden önce davranmış gibi görünüyor, ancak:
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!');
}
Konrad Rudolph]4 ve Armin Ronacher tarafından işaret edildiği gibi daha güvenli, ancak daha yavaş bir çözüm olacaktır:
Object.prototype.hasOwnProperty = function(property) {
return typeof this[property] !== 'undefined';
};
Evet öyle :) Bence Object.prototype.hasOwnProperty.call(x, 'key')
da yapabilirsiniz, eğer x
in hasOwnProperty
adında bir özelliği varsa bu da işe yarayacaktır :)
Ancak bu testler kendi özellikleri içindir. İçselleştirilebilecek bir özelliğe sahip olup olmadığını kontrol etmek istiyorsanız typeof x.foo != 'undefined'
kullanabilirsiniz.
Tamam, miras alınan özellikler istemiyorsanız doğru cevabı vermişim gibi görünüyor:
if (x.hasOwnProperty('key'))
Miras alınan özellikleri dahil etmek için diğer bazı seçenekler aşağıda verilmiştir:
if (x.key) // Quick and dirty, but it does the same thing as below.
if (x.key !== undefined)