Metoda Object.getOwnPropertyNames()
w JavaScript jest potężnym narzędziem, które pozwala na pobranie tablicy zawierającej nazwy wszystkich własnych właściwości (zarówno wyliczalnych, jak i niewyliczalnych) danego obiektu. Jest to szczególnie przydatne w przypadkach, gdy potrzebujemy dokładnej listy wszystkich kluczy obiektu, włącznie z tymi, które nie są dostępne poprzez standardową iterację za pomocą pętli for...in
czy metody Object.keys()
.
Przykład użycia Object.getOwnPropertyNames()
Załóżmy, że chcemy zbadać i wyświetlić wszystkie własne nazwy właściwości z obiektu w naszej aplikacji webowej. Poniżej znajduje się przykład kodu JavaScript w połączeniu z prostym kodem HTML, który demonstruje, jak można wykorzystać Object.getOwnPropertyNames()
do osiągnięcia tego celu.
Kod HTML i JavaScript
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<title>Wykorzystanie Object.getOwnPropertyNames() w JavaScript</title>
</head>
<body>
<h3>Właściwości obiektu:</h3>
<pre id="properties"></pre>
<script>
// Obiekt opisujący samochód
let car = {
brand: "Ford",
model: "Mustang",
year: 1969,
get fullName() {
return this.brand + ' ' + this.model;
}
};
// Dodanie niewyliczalnej właściwości
Object.defineProperty(car, 'engine', {
value: 'V8',
enumerable: false,
});
// Użycie Object.getOwnPropertyNames() do pobrania nazw właściwości
let propNames = Object.getOwnPropertyNames(car);
// Wyświetlanie nazw właściwości
document.getElementById('properties').textContent =
'Własne nazwy właściwości obiektu car: ' + propNames.join(', ');
</script>
</body>
</html>
W powyższym przykładzie zdefiniowaliśmy obiekt car
z kilkoma właściwościami, w tym jedną niewyliczalną właściwością engine
oraz getterem fullName
, który również jest traktowany jako właściwość. Następnie, za pomocą Object.getOwnPropertyNames(car)
, pobieramy wszystkie nazwy właściwości (włącznie z niewyliczalnymi) i wyświetlamy je w elemencie <pre>
.
Podsumowanie
Metoda Object.getOwnPropertyNames()
jest niezwykle użyteczna, gdy chcemy uzyskać pełną listę nazw właściwości obiektu, włączając w to te niewyliczalne, które są pomijane przez bardziej tradycyjne metody iteracji. Dzięki temu mamy możliwość pełnego introspekowania obiektów w JavaScript, co jest przydatne w debugowaniu, serializacji czy przy implementacji mechanizmów refleksji. Ta metoda jest jednym z wielu narzędzi, które JavaScript oferuje do efektywnego i głębokiego zarządzania obiektami.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video JavaScript w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.