Object.getOwnPropertyNames / getOwnPropertySymbols în JavaScript

Obiecte ES5 (getOwnPropertySymbols: ES2015)

Returnează toate cheile proprii ale unui obiect, inclusiv cele ascunse (neenumerabile) sau de tip Symbol.

Sintaxă
Object.getOwnPropertyNames(obiect)
Object.getOwnPropertySymbols(obiect)

Ce face Object.getOwnPropertyNames / getOwnPropertySymbols

Object.keys returnează doar cheile enumerabile de tip text. getOwnPropertyNames returnează toate cheile de tip text, inclusiv cele neenumerabile (de exemplu length la un tablou). getOwnPropertySymbols returnează cheile de tip Symbol.

Pentru toate cheile, de ambele tipuri, folosește Reflect.ownKeys.

Parametri

Parametru Descriere
obiect Obiectul inspectat.

Ce returnează

Un tablou de chei.

Exemple

Exemplul 1: Trei moduri de a lista cheile

const id = Symbol("id");
const obiect = { nume: "Ana", [id]: 7 };
Object.defineProperty(obiect, "ascuns", { value: true });

console.log(Object.keys(obiect));
console.log(Object.getOwnPropertyNames(obiect));
console.log(Object.getOwnPropertySymbols(obiect));
console.log(Reflect.ownKeys(obiect));

Rezultat

[ 'nume' ]
[ 'nume', 'ascuns' ]
[ Symbol(id) ]
[ 'nume', 'ascuns', Symbol(id) ]

Exemplul 2: Cheile ascunse ale unui tablou și ale lui Math

console.log(Object.getOwnPropertyNames(["a", "b"]));
console.log(Object.keys(Math).length, Object.getOwnPropertyNames(Math).length);

Rezultat

[ '0', '1', 'length' ]
0 44

Greșeli frecvente

  • Te aștepți să primești și proprietățile moștenite. Toate aceste metode returnează doar cheile proprii ale obiectului.

Comenzi înrudite

  • Object.keys / Object.values: Returnează un tablou cu cheile sau cu valorile unui obiect.
  • Reflect: Funcții pentru operațiile de bază pe obiecte (citire, scriere, ștergere, chei), cu aceleași nume ca în Proxy.
  • Symbol / Symbol.for: Creează valori unice, folosite ca chei de proprietăți care nu se ciocnesc cu alte chei.