Вычисляемые свойства
Часть раздела Объектно-ориентированное программирование путешествия по JavaScript на Coddy. Урок 44 из 56.
computed property — это getter, который вычисляет и возвращает значение, вместо того чтобы просто возвращать сохранённые данные. Они выглядят как обычные property, но вычисляют своё значение на лету.
Давайте рассмотрим пример. У нас есть объект с обычным свойством:
const circle = {
radius: 5
};Теперь добавим вычисляемое свойство с помощью getter:
const circle = {
radius: 5,
get diameter() {
return this.radius * 2;
}
};Так мы получаем доступ к вычисляемому свойству:
console.log(circle.diameter); // Выводит: 10Если мы обновим radius, diameter также обновится автоматически:
circle.radius = 10;
console.log(circle.diameter); // Выводит: 20Вычисляемые свойства полезны, когда значение свойства зависит от других свойств или требует вычисления.
Задание
Тебе дан Rectangle class со свойствами width и height. Твоя задача — добавить computed properties для area и perimeter.
- Computed property
<strong>area</strong>— returns width × height - Computed property
<strong>perimeter</strong>— returns 2 × (width + height)
Попробуйте сами
import { Rectangle } from './rectangle.js';
// Тестовый код — не изменять
const rect = new Rectangle(5, 10);
console.log(`Area: ${rect.area}`); // Должен вывести "Area: 50"
console.log(`Perimeter: ${rect.perimeter}`); // Должен вывести "Perimeter: 30"В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
1Объекты и ключевое слово this
Краткий обзор: ОбъектыДобавление методов в объектыПонимание ключевого слова thisФункции-конструкторыКлючевое слово newИтоговое испытание7Наследование и ключевое слово extends
НаследованиеОтношение «is-a»Ключевое слово extendsМетод super()Наследование свойств и методовИтоговое испытание10Полиморфизм
Что такое полиморфизм?Переопределение унаследованных методовИспользование superИтоговое задание13Композиция против наследования
Отношения «has-a» и «is-a»Ограничения глубокого наследованияСоздание объектов2Организация кода
Что такое модули?Экспорт с помощью exportИмпорт с помощью importDefault против именованных экспортов5Инкапсуляция и доступ
ИнкапсуляцияПубличные и приватные поля классовПриватные методыЗадание на повторение8Организация кода ООП
Организация классов в модули11Проект: Отрисовщик фигур
Настройка: Класс Shape и экспортНаследование класса CircleПереопределение и метод AreaСтатический счетчик фигур14Система управления библиотекой
Проектирование библиотекиКласс Book с использованием композицииВалидация автора книги6Проект: Простой банковский счет
Класс BankAccountПополнение и снятие средствБаланс как приватное поле9Статические методы и свойства
Уровень класса против уровня экземпляраСтатические свойстваСтатические вспомогательные методыЗадание на закрепление12Геттеры и сеттеры
Ключевые слова get и setВычисляемые свойстваВалидация и побочные эффектыИтоговое заданиеПотренируйтесь самостоятельно: Онлайн-компилятор JavaScript