Object.hasOwn / hasOwnProperty în JavaScript

Obiecte ES2022 (hasOwnProperty: toate browserele)

Verifică dacă un obiect are o proprietate proprie (nu moștenită) cu numele dat.

Sintaxă
Object.hasOwn(obiect, cheie)
obiect.hasOwnProperty(cheie)

Ce face Object.hasOwn / hasOwnProperty

Operatorul in răspunde true și pentru proprietățile moștenite ("toString" in {}). Object.hasOwn verifică doar proprietățile obiectului însuși.

hasOwnProperty face același lucru, dar este o metodă moștenită, deci nu merge pe obiecte create cu Object.create(null) și poate fi suprascrisă. În cod nou folosește Object.hasOwn. Înrudită: propertyIsEnumerable verifică dacă proprietatea proprie este și enumerabilă.

Parametri

Parametru Descriere
obiect Obiectul verificat.
cheie Numele proprietății.

Ce returnează

true sau false.

Exemple

Exemplul 1: Proprii și moștenite

const setari = { tema: "întunecată", font: undefined };

console.log(Object.hasOwn(setari, "tema"));
console.log(Object.hasOwn(setari, "font"));
console.log(Object.hasOwn(setari, "toString"), "toString" in setari);
console.log(setari.hasOwnProperty("tema"));

Rezultat

true
true
false true
true

Exemplul 2: Obiect fără prototip și proprietăți neenumerabile

const dictionar = Object.create(null);
dictionar.mere = 3;

console.log(Object.hasOwn(dictionar, "mere"));
console.log(typeof dictionar.hasOwnProperty);
console.log([1, 2].propertyIsEnumerable(0), [1, 2].propertyIsEnumerable("length"));

Rezultat

true
undefined
true false

Greșeli frecvente

  • Verifici existența cu if (obiect.cheie). Valorile 0, "" și false par lipsă, deși proprietatea există.

Comenzi înrudite