могу понять и почему когда я вывожу в консоль output просто без класса, ничего не выводится?
class Clock {
constructor({ template }) {
this.template = template;
}
render() {
let date = new Date();
let hours = date.getHours();
if (hours < 10) hours = '0' + hours;
let mins = date.getMinutes();
if (mins < 10) mins = '0' + mins;
let secs = date.getSeconds();
if (secs < 10) secs = '0' + secs;
let output = this.template
.replace('h', hours)
.replace('m', mins)
.replace('s', secs);
console.log(output);
}
stop() {
clearInterval(this.timer);
}
start() {
this.render();
this.timer = setInterval(() => this.render(), 1000);
}
}
Template передаётся в конструктор через объект
из аргумента, передаваемого при создании экземпляра, например
А где тут этот объект? Его надо передать const clock = new Clock() и тут передаём объект?
Ну да, а в конструкторе он деструктуризируется и в this заптсывается
А можешь расписать с примером если не сложно? Не догоняю прям что откуда и куда записывается 😕
class Clock { // Конструктор принимает объект, из которого сразу достаётся поле template constructor({ template }) { // Дальше это поле записывается в this this.template = template; } render() { // Так как контекст this общий для всего класса, в любом методе можно получить из него поле console.log(this.template) } } const clock = new Clock({ template: 'some string' }) clock.render() // В консоль выведется some string
Обсуждают сегодня