Learning JavaScript Design Patterns / Шаблоны проектирования JavaScript: Шаблон Конструктор (Constructor)
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
В классических объектно-ориентированных языках программировании, конструктор – это специальный метод инициализации объекта, который вызывается когда объект создан и под него выделена память. В JavaScript, где практически все является объектом, мы наиболее заинтересованы в конструкторах объектов. An_zh 09.07.14 в 15:08 |
|
|
Конструкторы объектов позволяют создавать объекты специфичного типа, подготавливая объект к использованию и принимая аргументы, которые могут быть использованы для определения значений свойств и методов при создании объекта. Agnis 18.09.15 в 00:48 |
||
|
Создание объектов An_zh 09.07.14 в 17:40 |
||
|
В JavaScript есть три основных способа создания объектов: An_zh 09.07.14 в 17:41 |
||
|
1 An_zh 09.07.14 в 17:45 |
||
|
Где конструктор "Object", в последнем примере создает объект обертку с определенным значением, если значение не передается, то создается и возвращается пустой объект. An_zh 10.07.14 в 11:00 |
||
|
Существует четыре способа присвоения значения свойствам объекта: An_zh 10.07.14 в 11:25 |
||
|
01 An_zh 10.07.14 в 11:25 |
||
|
Как мы узнаем чуть позже, эти же методы можно использовать при наследовании: An_zh 10.07.14 в 11:27 |
||
|
01 An_zh 10.07.14 в 11:33 |
||
|
Простые Конструкторы Agnis 18.09.15 в 00:49 |
||
|
Как мы узнали ранее, JavaScript не поддерживает классы, но для работы с объектами есть специальная функция конструктор. Если при вызове функции предварять ее название ключевым словом «new», то для JavaScript это будет обозначать, что функция является конструктором, и она служит для инициализации нового объекта значениями определенным в этой функции. An_zh 10.07.14 в 18:19 |
||
|
Внутри конструктора ключевое слово «this» указывает на вновь созданный объект. Еще раз рассмотрим создание объекта, основной конструктор может выглядеть так: An_zh 10.07.14 в 18:43 |
||
|
01 An_zh 11.07.14 в 19:36 |
||
|
Выше приведен пример простого шаблона конструктор, который имеет несколько недостатков. Первый заключается в том что, усложняется процесс наследования, второй – такие функции как toString() переопределяются каждый раз при создании нового объекта конструктором Car. Это не очень оптимально, так как в идеале функция должна быть определена один раз и доступна всем экземплярами класса Car. An_zh 11.07.14 в 19:39 |
||
|
К счастью обойти эти ограничения достаточно просто, существует ряд альтернатив как для стандарта ES3, так и для ES5. An_zh 11.07.14 в 19:44 |
||
|
Свойство конструктора Prototype An_zh 12.07.14 в 10:55 |
||
|
В JavaScript у функций есть свойство prototype. Когда вызывается конструктор для создания объекта, все свойства указанного прототипа, становятся доступны новому объекту. Так можно создать множество объектов класса Car с одним и тем же прототипом. Исходный пример можно модифицировать следующим образом: An_zh 12.07.14 в 10:54 |
||
|
01 Agnis 18.09.15 в 00:43 |
||
|
В вышеописанном примере функция toString() обвялена один раз и доступна всем объектам класса Car An_zh 12.07.14 в 11:02 |
+1 |
