JavaScript'te bir nesnenin belirli bir özelliğe sahip olup olmadığını nasıl kontrol edebilirim?

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';
};
Yorumlar (4)

Evet öyle :) Bence Object.prototype.hasOwnProperty.call(x, 'key') da yapabilirsiniz, eğer xin 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.

Yorumlar (0)

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)
Yorumlar (3)