Modest Programmer logo
6 października 2018
Tagi: JavaScript
Dzisiaj krótki artykuł, a mianowicie opiszę Ci jak można deklarować obiekty za pomocą const, oraz w szczególności czym różni się deklaracja obiektu zadeklarowanego w taki sposób od deklaracji zwykłych zmiennych prostych tym samym sposobem.

Na pewno dobrze pamiętasz, że dzięki słowu kluczowemu const, który został wprowadzony w ES6 możesz deklarować stałe. Dla przypomnienia krótki przykład:
let myLetNumber = 23;
myLetNumber = 25

const myConstNumber = 12;
myConstNumber = 14; //TypeError: invalid assignment to const 'myConstNumber'
To co się tutaj stało nie powinno być dla Ciebie żadną nowością :) Gdy zadeklarujesz zmienna za pomocą słowa let, możesz spokojnie wartość tej zmiennej zastąpić inną. W przypadku gdy zadeklarujesz stałą za pomocą słowa const, wartości tej już nie możesz zmienić. Otrzymasz wtedy błąd. Ok to wszystko jest pewnie dla Ciebie jasne, a teraz zobacz jak wygląda to na obiektach.
class Car {
    constructor(name, price) {
        this.name = name;
        this.price = price;       
    }
}

const car = new Car('Audi', 20000);
car = new Car('Seat', 15000); //TypeError: invalid assignment to const 'car'
Zadeklarowaliśmy stałą car, która jest obiektem, następnie przy próbie przypisania do stałej car nowego obiektu, otrzymaliśmy błąd taki sam jak w przykładzie powyżej. Wszystko ok, tutaj też żadnej nowości, ten błąd jest Ci już znany. Przeanalizujmy jeszcze jeden przykład.
const car = new Car('Audi', 20000);
car.name = 'Seat';
car.price = 15000;
console.log(car.name); //Seat
console.log(car.price); //15000
Tutaj prawdopodobnie stało się dla Ciebie coś niespodziewanego. Mimo, że zadeklarowaliśmy obiekt car jako stała za pomocą słowa const, to i tak zmieniliśmy wartość jego właściwości. Dlaczego tak się stało? W jednym z poprzednich artykułów poświęconych kursowi podstaw JavaScript rozmawialiśmy o tym, że obiekt nie jest typem prostym, lecz typem referencyjnym. Czyli w rzeczywistości obiekt wskazuje na jakieś konkretne miejsce w pamięci. W przykładzie gdzie otrzymaliśmy błąd przy zmianie obiektu, wystąpił on dlatego że chcieliśmy zmienić jego referencje, a to jest niedozwolone w przypadku stałych. Zmiana wartości samej właściwości, nie zmienia referencji obiektu, dzięki temu obiektom które deklarujesz jako stałe możesz zmieniać wartości właściwości.

To wszystko co chciałem Ci przekazać w tym artykule. Zapraszam Cię do kolejnych artykułów z serii podstaw programowania w języku JavaScript.

Poprzedni artykuł - Klasy w JavaScript.
Następny artykuł - Programowanie zorientowane obiektowo w JavaScript.
Autor artykułu:
Kazimierz Szpin
Kazimierz Szpin
Programista. Specjalizuje się w C#, głównie WPF, Windows Forms oraz ASP.NET MVC.
Autor bloga ModestProgrammer.pl
Dodaj komentarz
© Copyright 2018 modestprogrammer.pl. Wszelkie prawa zastrzeżone Design by Kazimierz Szpin