Jak zjistit, zda má objekt danou vlastnost v JavaScriptu

Jak mohu určit, zda je objekt x má definovanou vlastnost y , bez ohledu na hodnotu x.y ?

Momentálně používám

if (typeof(x.y) !== 'undefined')

ale zdá se mi to trochu trapné. Existuje lepší způsob?

Odpověď

Objekt má vlastnost:

Pokud testujete vlastnosti, které jsou na samotném objektu (není součástí jeho prototypového řetězce), můžete použít .hasOwnProperty() :

if (x.hasOwnProperty('y')) { 
  // ......
}

Objekt nebo jeho prototyp má vlastnost:

Můžete použít in operátor pro testování vlastností, které se také dědí.

if ('y' in x) {
  // ......
}