Typy referencyjne to pojęcia związane z językiem JavaScript, które dotyczą sposobu przechowywania i kopiowania danych w pamięci komputera. W języku JavaScript istnieją dwa rodzaje typów: typy referencyjne i typy wartościowe (prymitywne).
Można to porównać do przechowywania rzeczy w naszym domu. Typy referencyjne to takie, które przechowujemy w szafie lub na półce, a typy wartościowe to takie, które trzymamy w ręce lub w kieszeni.
Typy referencyjne to takie, które są przechowywane w pamięci komputera w sposób pośredni. Oznacza to, że zmienna zawierająca typ referencyjny nie przechowuje wartości bezpośrednio, ale przechowuje informację o miejscu, w którym ta wartość jest przechowywana w pamięci komputera. Dzięki temu możemy mieć wiele różnych zmiennych, które wskazują na tę samą wartość.
Typy referencyjne – przykład tablicy
Na przykład jeśli mamy zmienną x
zawierającą typ referencyjny, to możemy utworzyć nową zmienną y
, która będzie wskazywała na tę samą wartość, co zmienna x
:
let x = [1, 2, 3];
let y = x;
console.log(x); // [1, 2, 3]
console.log(y); // [1, 2, 3]
Jak widać powyżej, zmienne x
i y
wskazują na tę samą wartość w pamięci komputera. Dlatego zmieniając wartość zmiennej x
, zmienimy również wartość zmiennej y
, ponieważ obie zmienne wskazują na tę samą wartość w pamięci:
let x = [1, 2, 3];
let y = x;
console.log(x); // [1, 2, 3]
console.log(y); // [1, 2, 3]
x.push(4);
console.log(x); // [1, 2, 3, 4]
console.log(y); // [1, 2, 3, 4]
Jak widać powyżej, po dodaniu elementu do tablicy przechowywanej w zmiennej x
, również tablica przechowywana w zmiennej y
została zmieniona, ponieważ obie zmienne wskazują na tę samą wartość w pamięci.
Typy referencyjne są bardzo przydatne w języku JavaScript, ponieważ pozwalają na przechowywanie dużych i złożonych danych oraz na współdzielenie tych danych pomiędzy różnymi zmiennymi i funkcjami. Dzięki temu możemy uniknąć tworzenia wielu kopii tych samych danych, co znacznie zwiększa wydajność naszej aplikacji.
Typy referencyjne to również typy mutowalne, co oznacza, że możemy zmieniać ich wartości w dowolnym momencie. Na przykład jeśli mamy zmienną x
zawierającą tablicę, to możemy w dowolnym momencie dodawać nowe elementy do tej tablicy:
let x = [1, 2, 3];
console.log(x); // [1, 2, 3]
x.push(4);
console.log(x); // [1, 2, 3, 4]
x.push(5);
console.log(x); // [1, 2, 3, 4, 5]
Jak widać powyżej, możemy w dowolnym momencie zmieniać wartość zmiennej x
, ponieważ jest ona typu referencyjnego.
Typy referencyjne to także obiekty, które są szczególnym rodzajem typów referencyjnych w języku JavaScript. Obiekty są złożonymi strukturami danych, które pozwalają na przechowywanie wielu różnych wartości w strukturze klucz-wartość. Na przykład możemy utworzyć obiekt zawierający informacje o osobie:
let person = {
firstName: "Mateusz",
lastName: "Morawski",
age: 50
};
console.log(person.firstName); // Mateusz
console.log(person.lastName); // Morawski
console.log(person.age); // 50
Jak widać powyżej, obiekty pozwalają na przechowywanie wielu różnych danych w strukturze klucz-wartość. Możemy również zmieniać wartości w obiekcie w dowolnym momencie:
let person = {
firstName: "Mateusz",
lastName: "Morawski",
age: 50
};
console.log(person.firstName); // Mateusz
console.log(person.lastName); // Morawski
console.log(person.age); // 50
person.age = 51;
console.log(person.age); // 51
Jak widać powyżej, możemy zmienić wartość właściwości obiektu person
w dowolnym momencie. To sprawia, że obiekty są bardzo elastycznym i przydatnym narzędziem w języku JavaScript. Możemy tworzyć różne obiekty reprezentujące różne rzeczy w naszej aplikacji, takie jak produkty w sklepie, użytkownicy w aplikacji, czy nawet całe strony internetowe.
Podsumowując, typy referencyjne to bardzo ważne i przydatne pojęcia w języku JavaScript. Pozwalają one na przechowywanie dużych i złożonych danych w pamięci komputera oraz na współdzielenie tych danych pomiędzy różnymi zmiennymi i funkcjami. Obiekty są szczególnym rodzajem typów referencyjnych, które pozwalają na przechowywanie danych w strukturze klucz-wartość i są bardzo elastyczne w użyciu. Zrozumienie tych pojęć pomoże nam tworzyć bardziej zaawansowane i wydajne aplikacje w języku JavaScript.
Przeciwieństwem typów referencyjne są typy prymitywne.