Technologia obiektowa ECMAScript
- Poprzednia strona Klauzula (closure)
- Następna strona Aplikacje obiektów
Terminologia obiektowa
Obiekt
ECMA-262 definiuje obiekty (object) jako „niedokładne zbiorzenie atrybutów, każda atrybut zawiera wartość prymitywną, obiekt lub funkcję”. W dosłownym znaczeniu oznacza to, że obiekty są tablicą wartości bez określonej kolejności.
Chociaż ECMAScript tak definiuje obiekty, jego bardziej ogólna definicja opiera się na reprezentacji nazw (ludzi, miejsc lub rzeczy) jako kodu.
Klasa
Każdy obiekt jest zdefiniowany przez klasę, można więc traktować klasę jako recepturę obiektu. Klasa nie tylko definiuje interfejs obiektu (atrybuty i metody dostępne dla deweloperów), ale także wewnętrzną pracę obiektu (kod, który umożliwia działanie atrybutów i metod). Kompilatory i interpreterzy budują obiekty na podstawie opisu klasy.
Instancja
Kiedy program tworzy obiekty za pomocą klas, generowane obiekty nazywane są instancjami klasy (instance). Jedynym ograniczeniem liczby obiektów generowanych przez klasę jest fizyczna pamięć maszyny, na której działa kod. Każda instancja zachowuje się tak samo, ale przetwarza zestaw niezależnych danych. Proces tworzenia obiektów instancji przez klasę nazywa się instancjalizacją (instantiation).
W poprzednich rozdziałach wspomniałem, że ECMAScript nie ma formalnych klas. Zamiast tego, ECMA-262 opisuje obiekty jako receptury obiektów. Jest to kompromis logiczny w ECMAScript, ponieważ definicja obiektu jest tak naprawdę obiektem samym w sobie. Pomimo tego, że klasy nie istnieją naprawdę, nazywamy definicję obiektu klasą, ponieważ większość deweloperów jest bardziej familiarna z tym terminem, a funkcjonalnie są one równoważne.
Wymagania języka orientowanego obiektowo
Język orientowany obiektowo musi dostarczać deweloperom cztery podstawowe zdolności:
- Encapsulacja - zdolność przechowywania związanych informacji (zarówno danych, jak i metod) w obiekcie
- Agregacja - zdolność przechowywania jednego obiektu wewnątrz innego obiektu
- Inherencja - zdolność uzyskiwania właściwości i metod z innej klasy (lub wielu klas)
- Polimorfizm - zdolność pisania funkcji lub metod, które mogą działać na różne sposoby
ECMAScript wspiera te wymagania, więc można go traktować jako język orientowany obiektowo.
Konstrukcja obiektu
W ECMAScript obiekty składają się z atrybutów (attributów), które mogą być wartościami prymitywnymi lub wartościami referencyjnymi. Jeśli atrybut zawiera funkcję, jest to uważane za metodę obiektu, w przeciwnym razie atrybut jest uważany za właściwość obiektu.
- Poprzednia strona Klauzula (closure)
- Następna strona Aplikacje obiektów