class Game {
constructor(parentElement) {
let wrap = document.createElement('div');
wrap.className = 'wrap';
parentElement.appendChild(wrap);
this.nav = document.createElement('div');
this.nav.className = 'nav';
wrap.appendChild(this.nav);
this.x = document.createElement('div');
this.x.className = 'x';
this.x.innerHTML = 'win x:'
this.nav.appendChild(this.x);
this.btn = document.createElement('button');
this.btn.className = 'reset';
this.btn.innerHTML = 'reset';
this.nav.appendChild(this.btn);
this.o = document.createElement('div');
this.o.className = 'o';
this.o.innerHTML ='win o:'
this.nav.appendChild(this.o);
this.field = document.createElement('div');
this.field.className = 'field';
wrap.appendChild(this.field);
// this.field = [];
for (let i = 0; i < 9; i++) {
this.cell = document.createElement('div');
this.cell.className = 'cell';
this.field.appendChild(this.cell);
}
console.log(this.field.length)
}
}
в классе Game я создаю каркас html для мини игры. Вопрос: все "переменные" (this.x , this.nav, this.btn) я бы мог создать через let - как первую (wrap). В чем существенное отличие ??? не судите если это банально просто) я только изучаю js и бороду еще не отрастил)
Здесь wrap - локальная переменная в конструкторе:
let wrap = document.createElement('div');
Здесь wrap - свойство создаваемого объекта:
this.wrap = document.createElement('div');
Если ссылка нужна только внутри функции, используйте локальную переменную. Если ссылка на объект нужна в других методах или во внешнем коде, используйте свойство объекта.
Присваивание this.cell = ... в цикле - бессмысленно.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости