Javascript, помимо стандартных возможностей, предоставляет массу способов использовать объектно-ориентированное программирование. В Javascript вы можете создавать объекты или псевдообъекты. Для этого существуют следующие способы:
- Оператор new
- Литеральная нотация
- Конструкторы объектов
- Прототипы
- Ассоциативные массивы
Используем оператор new
Это, наверное, самый легкий способ создания объекта. Вы просто создаете имя объекта и приравниваете его к новому объекту Javascript.
Литеральная нотация
Литеральная нотация является несколько непривычным способом определения новых объектов, но достаточно легким для понимания. Литеральная нотация работает в версии Javascript 1.2 и выше.
Как видите, это довольно просто.
Использовать это легко.
Конструкторы объектов - это мощное средство для создания объектов, которые можно использовать множество раз. Конструктор объекта - это, по сути, обычная функция Javascript, которой так же можно передавать различные параметры.
Если проводить параллели с ООП, то это - функция-конструтор. С помощью неё мы и будем создавать наш объект.
Таким образом мы создали различные экземпляры объекта. Теперь мы можем работать отдельно с каждым экземпляром объекта MyObject, не боясь того, что, изменяя свойства одного экземпляра, мы затронем свойства другого экземпляра.
Как и в ООП, у MyObject могут быть методы и различные свойства. Свойствам можно присвоить значения по умолчанию, либо значения, переданные пользователем в конструкторе объекта.
Аналогичным образом мы можем создавать и функции.
Я считаю, что это один из самых мощнейших механизмов Javascript.
Использование прототипов
Прототипы в Javascript`е появились с версии 1.1. С помощью прототипов можно добавлять новые свойства и параметры к уже существующим объектам. В прототипах можно провести некоторую аналогию с наследованием в ООП: создается иерархия, или слои.
Иллюстрация показывает, что экземпляр класса наследует все свойства и методы класса, который, в свою очередь, наследует свойства и методы объекта, на основе которого был создан класс.
Создание объекта здесь ничем не отличается от аналогичного процесса при создании объекта с помощью конструкторов.
Если вдруг мы захотим создать новое свойство для объекта MyObject, то сделать это можно будет следующим образом:
Как видите, создать новое свойство для объект не сложно, но оно будет доступно только на данном экземпляре и не будет распространятся на другие. Чтобы решить эту проблему, стоит использовать прототипы.
Это не является лучшим решением использования прототипов - это просто пример. Почему это не является лучшим решением? Потому что код будет трудно сопровождать, если свойства объектов не как положено (в самом объекте), а в произвольном месте скрипта.
Свойствам, созданным через прототипы, можно задавать значения по умолчанию. Впоследствии их можно будет перезаписать (это было показано в предыдущем примере).
Как и следовало ожидать, помимо свойств можно создавать и методы. Вот простой пример того, как это сделать.
Механизм прототипов мощен не только по вышеперечисленным возможностям, но и потому, что можно улучшать собственные объекты Javascript, такие как String, Array, и другие. Приведу простой пример:
Ассоциативные массивы
Помимо стандартных методов, существуют и достаточно экзотические, такие как создание ассоциативных массивов. Это будет полезно для упорядочивания большого числа однотипных объектов.
Итак, мы рассмотрели способы создания объектов с помощью Javascript. Каждый имеет свои достоинства и недостатки, но какой именно способ выбрать для работы - решать вам.