|
4 | 4 |
|
5 | 5 | Иногда это может ограничивать нас. Например, у нас есть класс `StreetSweeper` и класс `Bicycle`, а мы хотим создать их смесь: `StreetSweepingBicycle`. |
6 | 6 |
|
7 | | -Или у нас есть класс `User`, который реализует пользователей, и класс `EventEmitter`, реализующий события. Мы хотели бы добавить функционал класса `EventEmitter` к `User`, чтобы пользователи могли легко генерировать события. |
| 7 | +Или у нас есть класс `User`, который реализует пользователей, и класс `EventEmitter`, реализующий события. Мы хотели бы добавить функциональность класса `EventEmitter` к `User`, чтобы пользователи могли легко генерировать события. |
8 | 8 |
|
9 | 9 | Для таких случаев существуют "примеси". |
10 | 10 |
|
11 | 11 | По определению из Википедии, [примесь](https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%81%D1%8C_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)) - это класс, методы которого предназначены для использования в других классах, причём без наследования от примеси. |
12 | 12 |
|
13 | | -Другими словами, *примесь* определяет методы, которые реализуют определённое поведение. Мы не используем примесь саму по себе, а используем её, чтобы добавить функционал другим классам. |
| 13 | +Другими словами, *примесь* определяет методы, которые реализуют определённое поведение. Мы не используем примесь саму по себе, а используем её, чтобы добавить функциональность другим классам. |
14 | 14 |
|
15 | 15 | ## Пример примеси |
16 | 16 |
|
@@ -107,7 +107,7 @@ new User("Вася").sayHi(); // Привет, Вася! |
107 | 107 |
|
108 | 108 | ## EventMixin |
109 | 109 |
|
110 | | -Многие объекты в браузерной разработке (и не только) обладают важной способностью - они могут генерировать события. События - отличный способ передачи информации всем, кто в ней заинтересован. Давайте создадим примесь, которая позволит легко добавлять функционал по работе с событиями любым классам/объектам. |
| 110 | +Многие объекты в браузерной разработке (и не только) обладают важной способностью - они могут генерировать события. События - отличный способ передачи информации всем, кто в ней заинтересован. Давайте создадим примесь, которая позволит легко добавлять функциональность по работе с событиями любым классам/объектам. |
111 | 111 |
|
112 | 112 | - Примесь добавит метод `.trigger(name, [data])` для генерации события. Аргумент `name` - это имя события, за которым могут следовать другие аргументы с данными для события. |
113 | 113 | - Также будет добавлен метод `.on(name, handler)`, который назначает обработчик для события с заданным именем. Обработчик будет вызван, когда произойдёт событие с указанным именем `name`, и получит данные из `.trigger`. |
@@ -203,6 +203,6 @@ menu.choose("123"); // Выбранное значение: 123 |
203 | 203 |
|
204 | 204 | Некоторые другие языки допускают множественное наследование. JavaScript не поддерживает множественное наследование, но с помощью примесей мы можем реализовать нечто похожее, скопировав методы в прототип. |
205 | 205 |
|
206 | | -Мы можем использовать примеси для расширения функционала классов, например, для обработки событий, как мы сделали это выше. |
| 206 | +Мы можем использовать примеси для расширения функциональности классов, например, для обработки событий, как мы сделали это выше. |
207 | 207 |
|
208 | 208 | С примесями могут возникнуть конфликты, если они перезаписывают существующие методы класса. Стоит помнить об этом и быть внимательнее при выборе имён для методов примеси, чтобы их избежать. |
0 commit comments