Jak możemy korzystać z Object.defineProperties() w JavaScript?

Object.defineProperties() jest potężną metodą w JavaScript, która pozwala na precyzyjne definiowanie lub modyfikowanie wielu właściwości obiektu naraz. Dzięki tej metodzie, możemy ustawić właściwości takie jak wartość (value), możliwość zapisu (writable), konfigurowalność (configurable), oraz możliwość enumeracji (enumerable). Metoda ta jest szczególnie przydatna, kiedy potrzebujemy większej kontroli nad właściwościami obiektu, niż oferuje standardowe przypisywanie wartości.

Przykład użycia Object.defineProperties() w JavaScript z HTML

W poniższym przykładzie, zobaczymy, jak można użyć Object.defineProperties() do zdefiniowania obiektu person z kontrolowanymi właściwościami.

Kod HTML i JavaScript
<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="UTF-8">
    <title>Przykład Object.defineProperties()</title>
</head>
<body>
    <script>
        // Definiowanie obiektu person za pomocą Object.defineProperties
        let person = {};

        Object.defineProperties(person, {
            'name': {
                value: 'Jan',
                writable: true,
                configurable: true,
                enumerable: true
            },
            'age': {
                value: 30,
                writable: false, // Nie można zmienić po zdefiniowaniu
                configurable: true,
                enumerable: true
            }
        });

        // Próba zmiany wieku (nie powiedzie się, ponieważ writable: false)
        person.age = 31;

        // Wyświetlanie obiektu person
        console.log(person);

        // Spróbujmy teraz zmienić właściwość age na writable
        Object.defineProperty(person, 'age', { writable: true });

        // Zmiana wieku na 31 (teraz powinno się udać)
        person.age = 31;

        // Ponowne wyświetlenie obiektu person
        console.log(person);
    </script>
</body>
</html>

 

W powyższym przykładzie, najpierw definiujemy obiekt person z dwoma właściwościami: name i age. Ustawiamy właściwość age jako niezapisywalną (writable: false), co oznacza, że próba zmiany tej wartości nie powiedzie się. Następnie, za pomocą Object.defineProperty(), zmieniamy właściwość age na zapisywalną, co pozwala na pomyślną zmianę wieku osoby.

Podsumowanie

Metoda Object.defineProperties() w JavaScript umożliwia zaawansowane zarządzanie właściwościami obiektów. Dzięki niej, możemy dokładnie kontrolować, które właściwości są zapisywalne, konfigurowalne, oraz czy mogą być wylistowane podczas iteracji po właściwościach obiektu. Jest to szczególnie przydatne w bardziej złożonych aplikacjach, gdzie potrzebna jest precyzyjna kontrola nad zachowaniem obiektów. Użycie tej metody pozwala na lepszą organizację kodu i zapewnia większą elastyczność w zarządzaniu stanem aplikacji.

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.

Scroll to Top