Kategorie
Podstawy JavaScript

Czym są typy referencyjne w JavaScript?

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 w JavaScript

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.