let или this в объекте?

127
17 июня 2019, 07:50
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 и бороду еще не отрастил)

Answer 1

Здесь wrap - локальная переменная в конструкторе:

   let wrap = document.createElement('div');

Здесь wrap - свойство создаваемого объекта:

   this.wrap = document.createElement('div');

Если ссылка нужна только внутри функции, используйте локальную переменную. Если ссылка на объект нужна в других методах или во внешнем коде, используйте свойство объекта.

Присваивание this.cell = ... в цикле - бессмысленно.

READ ALSO
datatimepicker c разделением расписания времени на am и pm

datatimepicker c разделением расписания времени на am и pm

Есть подобный календарь+расписаниеРасписание разделено на "утро" и "день"

150
Kак решить задачу пользователь начинает скролить перенести его во вторую секцию http://genrich.ru/holmhill2/ ,как это првильно сделать? [закрыт]

Kак решить задачу пользователь начинает скролить перенести его во вторую секцию http://genrich.ru/holmhill2/ ,как это првильно сделать? [закрыт]

как решить задачу года пользователь начинает скролить пренести его во вторую секцию http://genrichru/holmhill2/ ,тут с костылями ,как это првильно сделать...

113
JS не видит переменную, переданную через res.send

JS не видит переменную, переданную через res.send

На сервере передаю переменную

131
Как циклом вывести статьи?

Как циклом вывести статьи?

У меня есть JSON что приходит по API (Screen)

117