|
| 1 | +'use strict'; |
| 2 | + |
| 3 | +// Задание 1: |
| 4 | +// Представь, что мы пишем ядро фреймворка. У нас есть функция render(component), которая отрисовывает компоненты на экране. |
| 5 | +// 1. Создай WeakSet с именем trustedComponents. |
| 6 | +// 2. Напиши код, где создаются два объекта: |
| 7 | +// - validComponent = { id: 1 } (этот нужно "официально зарегистрировать" в нашем наборе). |
| 8 | +// - fakeComponent = { id: 1 } (этот регистрировать не нужно, это подделка). |
| 9 | +// 3. Напиши функцию render(comp), которая: |
| 10 | +// - Принимает объект. |
| 11 | +// - Проверяет, есть ли он в trustedComponents. |
| 12 | +// - Если есть — выводит в консоль "Отрисовка компонента...". |
| 13 | +// - Если нет — выводит "Ошибка! Неизвестный компонент.". |
| 14 | + |
| 15 | +const trustedComponents = new WeakSet(); |
| 16 | + |
| 17 | +const validComponent = { id: 1 }; |
| 18 | +const fakeComponent = { id: 1 }; |
| 19 | + |
| 20 | +trustedComponents.add(validComponent); |
| 21 | + |
| 22 | +function render(comp) { |
| 23 | + if (trustedComponents.has(comp)) { |
| 24 | + console.log('Отрисовка компонента...'); |
| 25 | + } else { |
| 26 | + console.log('Ошибка! Неизвестный компонент.'); |
| 27 | + } |
| 28 | +} |
| 29 | + |
| 30 | +render(validComponent); // "Отрисовка компонента..." |
| 31 | +render(fakeComponent); // "Ошибка! Неизвестный компонент." |
| 32 | + |
| 33 | +// Задание 2: |
| 34 | +// Представь, что мы разрабатываем модуль для интернет-магазина. У нас есть промокоды (объекты). Промокод можно применить только один раз. |
| 35 | +// 1. Создай WeakSet с именем usedCodes. |
| 36 | +// 2. Напиши функцию applyPromo(code), которая: |
| 37 | +// - Проверяет, был ли этот код уже использован. |
| 38 | +// - Если да — выводит: "Ошибка! Код уже использован". |
| 39 | +// - Если нет — добавляет код в "использованные" и выводит: "Успех! Скидка применена". |
| 40 | +// 3. Проверь работу: |
| 41 | +// - Создай объект promo = { discount: "10%" }. |
| 42 | +// - Вызови applyPromo(promo) первый раз (должен быть успех). |
| 43 | +// - Вызови applyPromo(promo) второй раз (должна быть ошибка). |
| 44 | + |
| 45 | +const usedCodes = new WeakSet(); |
| 46 | +const promo = { discount: '10%' }; |
| 47 | + |
| 48 | +function applyPromo(code) { |
| 49 | + if (!usedCodes.has(code)) { |
| 50 | + usedCodes.add(code); // второй аргумент, типа true.. не надо (это не WeakMap().. там можно/нужно, в WeakSet() нет) |
| 51 | + console.log('Успех! Скидка применена'); |
| 52 | + } else { |
| 53 | + console.log('Ошибка! Код уже использован'); |
| 54 | + } |
| 55 | +} |
| 56 | + |
| 57 | +applyPromo(promo); // "Успех! Скидка применена" |
| 58 | +applyPromo(promo); // "Ошибка! Код уже использован" |
0 commit comments