Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 61 из 114 · 9 мин
Поля класса, приватные #поля и методы, static-поля и методы, статический блок static {}, new.target и наследование от встроенных.
order.total = 0 — и заказ бесплатный! Хе-хе.
Приватное поле #total снаружи не достать вообще — даже прочитать нельзя.
class Cart { items = []; } — поле создаётся у каждого экземпляра.class Cart {
items = [];
discount = 0;
}
console.log(new Cart());#приватное#total — доступен только внутри класса. Снаружи — синтаксическая ошибка. Проверка наличия: #total in obj.class Order {
#total = 0;
add(price) { this.#total += price; }
get total() { return this.#total; }
}
const o = new Order();
o.add(220);
console.log(o.total, Object.keys(o));staticOrder.count, Order.fromJSON().class Order {
static count = 0;
constructor() { Order.count++; }
static create() { return new Order(); }
}
Order.create();
Order.create();
console.log(Order.count);static { }class Menu {
static prices = {};
static {
for (const [n, p] of [["Блокнот", 220], ["Пенал", 290]]) this.prices[n] = p;
}
}
console.log(Menu.prices);new.targetnew, иначе undefined.class Drink {
constructor() {
if (new.target === Drink) throw new Error("Только конкретный товар");
}
}
class Latte extends Drink {}
console.log(new Latte() instanceof Drink);Всё, что не должно меняться снаружи, — в #приватное. Наружу — только методы и геттеры.
Класс Order: приватное #items = [], метод add(price), геттер total, статическое поле count (сколько заказов создано).
Выберите один ответ.
Что будет при order.#total снаружи класса?
Выберите один ответ.
Где живёт static count?
Проверяем состояние обучения…