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). Valorile0,""șifalsepar lipsă, deși proprietatea există.
Comenzi înrudite
Object.keys / Object.values: Returnează un tablou cu cheile sau cu valorile unui obiect.Object.create: Creează un obiect nou care are ca prototip obiectul dat (moștenește proprietățile lui).Object.getOwnPropertyNames / getOwnPropertySymbols: Returnează toate cheile proprii ale unui obiect, inclusiv cele ascunse (neenumerabile) sau de tip Symbol.