Czym jest Object.isExtensible() w JavaScript?

W JavaScript, obiekty są dynamiczne, co oznacza, że można do nich dodawać, modyfikować lub usuwać ich właściwości w trakcie działania programu. Jednakże, w niektórych przypadkach, może zaistnieć potrzeba zamrożenia obiektu, aby zapobiec dalszym zmianom. Tutaj z pomocą przychodzi metoda Object.isExtensible(), która pozwala sprawdzić, czy do obiektu mogą być dodawane nowe właściwości.

Jak działa Object.isExtensible()

Metoda Object.isExtensible(obj) zwraca true, jeśli do obiektu obj można dodawać nowe właściwości, i false, gdy jest to niemożliwe. Jest to szczególnie przydatne, gdy pracujemy z obiektami, których struktura nie powinna być zmieniana po ich utworzeniu.

Przykład użycia Object.isExtensible()

Zobaczmy, jak Object.isExtensible() może być użyte w praktycznym przykładzie. Poniżej znajduje się prosty dokument HTML połączony z kodem JavaScript, który demonstruje użycie tej metody.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Demonstracja Object.isExtensible() w JavaScript</title>
</head>
<body>
    <script>
        // Obiekt opisujący użytkownika
        let user = {
            name: "Jan",
            age: 30
        };

        // Sprawdzanie, czy obiekt jest rozszerzalny
        console.log("Czy obiekt user jest rozszerzalny?", 
                    Object.isExtensible(user)); // true

        // Zmiana obiektu, aby nie można było do niego 
        // dodawać nowych właściwości
        Object.preventExtensions(user);

        // Ponowne sprawdzanie, czy obiekt jest rozszerzalny
        console.log("Czy obiekt user jest rozszerzalny po zmianie?", Object.isExtensible(user)); // false

        // Próba dodania nowej właściwości do obiektu
        try {
            user.email = "jan@example.com"; 
           // To nie zadziała, ponieważ obiekt 
           // nie jest rozszerzalny
        } catch (e) {
            console.log("Nie można dodać nowej właściwości do obiektu user.");
        }

        console.log("Czy obiekt user ma właściwość email?", 
                  user.hasOwnProperty('email')); // false
    </script>
</body>
</html>

W tym przykładzie, najpierw sprawdzamy, czy obiekt user jest rozszerzalny, co na początku zwraca true. Następnie używamy Object.preventExtensions(user), aby zapobiec dodawaniu nowych właściwości do tego obiektu. Po tej operacji, Object.isExtensible(user) zwraca false, co oznacza, że obiekt nie jest już rozszerzalny. Próba dodania nowej właściwości email do obiektu user kończy się niepowodzeniem, co demonstruje działanie tej metody.

Podsumowanie

Metoda Object.isExtensible() jest przydatnym narzędziem w arsenale każdego programisty JavaScript, pozwalającym na kontrolę nad możliwością modyfikacji obiektów. Dzięki niej można łatwo sprawdzić, czy do danego obiektu mogą być dodawane nowe właściwości, co jest szczególnie ważne w przypadku projektów, gdzie wymagana jest niezmienność struktury obiektów. Zapewnia to większą kontrolę nad kodem i pomaga w zapobieganiu nieprzewidzianym błędom.

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