Objekt a hasOwnProperty

SnoopySnoopy

JavaScript je dynamický jazyk, který umožňuje objektům dědit atributy zděděný prostřednictvím prototypového řetězce. Atributy tedy mohou být vlastní nebo jsou zděděné z rodičovského objektu. V tomto článku se proto zaměříme na metodu hasOwnProperty(), která je užitečná pro zjišťování informací o atributech.

Co je hasOwnProperty()?

Metoda hasOwnProperty() je reflexivní metoda, která patří k základnímu objektu Object.prototype. Vrací hodnotu true, pokud objekt má vlastnost s daným názvem, a hodnotu false v opačném případě. Jejím hlavním účelem je ověřit, zda daný objekt obsahuje určitou vlastnost jako svou vlastní, nikoli vlastnost získanou prostřednictvím prototypového řetězce.

Jak použít hasOwnProperty()?

Metoda hasOwnProperty() se volá na objektu, který chceme prozkoumat, a přijímá jeden argument - název vlastnosti, kterou chceme zkontrolovat. Použití metody je následující:

let dog = {
  name: 'Alík',
  age: 3
};

console.log(dog.hasOwnProperty('name')); // true
console.log(dog.hasOwnProperty('gender')); // false
console.log(dog.hasOwnProperty('hasOwnProperty')); // false

V tomto případě má objekt 'dog' vlastní vlastnost name a age, protože obě jsou přímo v definici objektu dog. Objekt však nemá žádnou vlastnost gender, proto dostáváme false.

hasOwnProperty() v kontextu prototypového dědění

V minulém příkladu se ještě můžeme pozastavit nad výsledkem 'hasOwnProperty', který je také negativní i když objekt dog metodu podporuje. V případě, že objekt dědí vlastnosti od jiného objektu pomocí prototypového řetězce, můžeme metodu hasOwnProperty() použít k ověření, zda je daná vlastnost vlastní nebo zděděná.

To je důležité, abychom zabránili zavolaní špatné metody, než té které zamýšlíme, což by mohlo vést k nežádoucím výsledkům nebo chybám.