Kategorie
Obiekty wbudowane Podstawy JavaScript Podstawy programowania

Obiekty JavaScript

Wprowadzenie do obiektów w JavaScript

Obiekty w JavaScript to podstawowa konstrukcja języka, która pozwala na przechowywanie i manipulowanie danymi. Obiekty w JavaScript są podobne do klasycznych obiektów programistycznych, takich jak obiekty w innych językach obiektowych (np. Java), ale mają kilka unikalnych cech.

W JavaScript obiekty są traktowane jako zbiory par klucz-wartość, zwane właściwościami obiektu. Obiekty mogą zawierać też metody, czyli funkcje, które są związane z obiektem i umożliwiają wykonywanie różnych operacji na tym konkretnym obiekcie.

Tworzenie obiektów

W języku JavaScript istnieją różne sposoby tworzenia obiektów. Jednym z nich jest użycie konstruktora (dla obiektów takich jak Object lub Array), który ma za zadanie utworzyć nowy obiekt, innym sposobem jest użycie literału obiektu, czyli notacji klamerki, dzięki temu możesz utworzyć nowy obiekt za pomocą jednej linii kodu.

Aby stworzyć nowy obiekt w języku JavaScript możesz również użyć metody Object.create() i utworzyć nowy obiekt z prototypem innego obiektu.

Konstruktory – szablon nowego obiektu

Konstruktory w JavaScript to funkcje, które służą do tworzenia nowych egzemplarzy obiektów. Są one nazywane „konstruktorami”, ponieważ są swego rodzaju szablonem konstrukcyjnym do „budowania” nowych obiektów przy pomocy operatora new.

Aby utworzyć konstruktor, wystarczy napisać funkcję o dowolnej nazwie, np. MyConstructor, i użyć słowa kluczowego this wewnątrz tej funkcji do odwołania się do nowego obiektu, który zostanie utworzony za pomocą tego konstruktora. Możesz również przekazać argumenty do konstruktora, aby móc ustalić początkowe wartości właściwości nowego obiektu.

Obiekty JavaScript – przykład konstruktora dla obiektu Person

function Person(name, age) {
  this.name = name;
  this.age = age;
}

Operator new – budowa obiektów z konstruktora

Operator new w języku JavaScript służy do tworzenia nowych egzemplarzy obiektów (instancji), które są tworzone na podstawie konstruktora.

Kiedy wywołasz operator new przed nazwą konstruktora obiektu, zostanie utworzony nowy obiekt i przypisane do niego this. Następnie konstruktor zostanie wywołany z argumentami podanymi w nawiasach po nazwie konstruktora. Wewnątrz konstruktora możesz użyć słowa kluczowego this do odwołania się do tego nowego obiektu i ustawić jego właściwości lub wywołać jego metody.

Przykład użycia operatora new:

const person = new Person('Piotr', 27);
console.log(person.name); // 'Piotr'
console.log(person.age); // 27

Literały – dosłowne tworzenie obiektu w JavaScript

Jak wspominałem wcześniej w JavaScript istnieją różne sposoby tworzenia obiektów. Jeśli chcesz utworzyć nowy obiekt to możesz użyć konstruktora, lub możesz też użyć literału obiektu, czyli notacji klamerki, aby utworzyć obiekt za pomocą jednej linii kodu.

Literały obiektów w JavaScript to zapisy obiektów z użyciem notacji {}. Można je używać, aby szybko stworzyć nowy obiekt z określonymi właściwościami i wartościami.

Pamiętaj, że pisząc kod w JavaScript możesz użyć literału obiektu, aby szybko stworzyć prosty obiekt bez potrzeby tworzenia konstruktora.

Oto przykład użycia literału obiektu w JavaScript:

const person = {
  name: 'Piotr',
  age: 27
};

console.log(person.name); // wyświetli "Piotr"
console.log(person.age); // wyświetli 27

Właściwości obiektów

W JavaScript właściwości obiektu to zmienne przypisane do obiektu, które służą do przechowywania danych lub funkcji specjalnych zwanych metodami. Właściwości obiektu są podobne do zmiennych, ale są przypisane do konkretnego obiektu, a nie do całego skryptu lub funkcji.

Właściwości obiektu w JavaScript
Właściwości obiektu JS

Jeśli chcesz utworzyć nową lub zmienić istniejącą właściwość obiektu, możesz to zrobić odwołując się do obiektu (przez zmienną) oraz przy pomocy operatora . (kropka) odwołać się do istniejącej lub nie istniejącej (nowej) właściwości, a następnie przypisać do niej wartość za pomocą operatora przypisania (=).

Oto przykład dodania nowej właściwości do istniejącego obiektu:

const person = {
  name: 'Piotr', // właściwość name
  age: 27 // właściwość age
};

person.canProgram = true; // nowa właściwość

console.log(person.canProgram); // true

Metody obiektów w JavaScript

Metody obiektów to funkcje, które są integralną częścią obiektów w języku JavaScript. Można je używać do wykonywania różnych operacji na obiektach, takich jak odczytywanie i zmiana ich właściwości, wywoływanie innych metod itp.

Aby dodać metodę do obiektu, należy przypisać ją jako właściwość obiektu i określić jej ciało jako funkcję. Na przykład:

const obj = {
  name: 'Piotr',
  greet: function() {
    console.log(`Jak się masz ${this.name}?`);
  }
};

obj.greet(); // wyświetli "Jak się masz Piotr"

Tworzenie metod przy pomocy skróconej składni

Tworząc nowe metody w obiekcie można również użyć składni „skróconej nazwy”, która pozwala zdefiniować metodę bez użycia słowa kluczowego function.

const obj = {
  name: 'Piotr',
  greet() {
    console.log(`Jak się masz ${this.name}?`);
  }
};

obj.greet(); // wyświetli "Jak się masz Piotr"

Słowo kluczowe this

this w JavaScript jest słowem kluczowym, które odwołuje się do obiektu, w kontekście którego zostało wywołane. Może to być obiekt globalny, obiekt funkcji lub nowo utworzony obiekt.

JavaScript - this

W zależności od tego, w jakim kontekście jest używane, this może mieć różne wartości. Oto kilka przykładów:

// Kontekst globalny
console.log(this); // odwołuje się do obiektu window lub global

const person = {
  name: 'Piotr',
  age: 27,
  greet: function() {
    console.log(`Witaj ${this.name}`);
  }
};

// Kontekst obiektu
person.greet(); // wyświetli "Witaj Piotr"

const greet = person.greet;

// Kontekst funkcji globalnej
greet(); // wyświetli "Witaj undefined"

Prototypy obiektów – dziedziczenie prototypowe w JavaScript

Dziedziczenie prototypowe to mechanizm w JavaScript, który umożliwia obiektom dziedziczenie właściwości i metod innych obiektów. Każdy obiekt w JavaScript ma swój prototyp, który jest innym obiektem, z którego może dziedziczyć właściwości i metody.

Jeśli obiekt nie ma wymaganej właściwości lub metody, to sprawdza swój prototyp, a następnie prototyp swojego prototypu itd., aż znajdzie odpowiednią właściwość lub metodę lub dojdzie do końca łańcucha prototypów.

Przykład dziedziczenia prototypowego:

const animal = {
  hasFur: true,
  makeSound() {
    console.log('Some generic animal sound');
  }
};

const dog = {
  isDomestic: true,
  makeSound() {
    console.log('Woof!');
  }
};

// Ustaw prototyp obiektu dog jako obiekt animal
Object.setPrototypeOf(dog, animal);

console.log(dog.hasFur); // true
console.log(dog.isDomestic); // true
dog.makeSound(); // 'Woof!'

W powyższym przykładzie obiekt dog dziedziczy właściwość hasFur z obiektu animal, a także ma swoją własną właściwość isDomestic. Ponadto, obiekt dog nadpisuje metodę makeSound() z obiektu animal, ale wciąż może uzyskać dostęp do oryginalnej metody poprzez swój prototyp.

Obiekty wbudowane w JavaScript

JavaScript posiada kilka specjalnych obiektów, które są szczególnie przydatne w różnych sytuacjach.

Obiekty wbudowane (ang. built-in objects) to obiekty predefiniowane w języku JavaScript, które są dostępne od razu po załadowaniu skryptu. Są to obiekty, które służą do różnych celów, takich jak praca z tablicami, ciągami tekstowymi, datami, funkcjami itp.

Obiekty JavaScrtip - Obiekty Wbudowane
Obiekty wbudowane

Niektóre przykłady obiektów wbudowanych w JavaScript to:

  • Obiekt „Math” – służy do wykonywania różnych matematycznych obliczeń, takich jak obliczanie wartości pi, pierwiastka kwadratowego, sinusa itp.
  • Obiekt „Date” – służy do pracy z datami i godzinami. Pozwala na tworzenie nowych obiektów daty, odczytywanie i zmienianie ich wartości, porównywanie dat itp.
  • Obiekt „Array” – służy do tworzenia i manipulowania tablicami. Pozwala na dodawanie i usuwanie elementów z tablicy, sortowanie elementów itp.
  • Obiekt „String” – służy do pracy z ciągami tekstowymi. Pozwala na tworzenie nowych obiektów ciągu tekstowego, odczytywanie i zmienianie ich wartości, porównywanie ciągów tekstowych itp.

Przykład użycia obiektu Date w JavaScript

const date = new Date();
console.log(date); // wyświetli aktualną datę i godzinę
console.log(date.getFullYear()); Wyświetli aktualny rok

Obiekty JavaScript – podsumowanie

Jak wspomniano na początku obiekty w języku JavaScript to podstawowa konstrukcja języka, która pozwala na przechowywanie i manipulowanie danymi. Możesz tworzyć obiekty za pomocą konstruktorów, literałów obiektów lub metody Object.create(), a także przypisywać im właściwości i metody. Prototypy pozwalają na dziedziczenie właściwości i metod między obiektami, natomiast specjalne obiekty, takie jak null, undefined, Math i Date, są przydatne w różnych sytuacjach.