@GeKskill

Присвоение через ссылку JS?

Почему может срабатывать вариант присвоения только через this
viewsHandler(elementClass){
    let data = this.data.htmlBlocks[elementClass].views;
    let now = new Date().getTime();
    if ( data.lastView && now - data.lastView / 1000 > 15 ) {
      data = {
        views: views.count++,
        lastView: now
      }
    } else {

// работает
      this.data.htmlBlocks[elementClass].views = {
        views: 1,
        lastView: now
      }
// не работает
      data = {
        views: 2,
        lastView: 1
      }
      
    }
  }
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
@alexalexes
У ссылки на объект можно менять только скалярные значения, избегая замены всего объекта. Тогда у data будет работать эффект ссылки на this.data.htmlBlocks[elementClass].views. Для переприсваивания объектов нужно брать сам this.data.htmlBlocks[elementClass].views.
viewsHandler(elementClass){
    let data = this.data.htmlBlocks[elementClass].views;
    let now = new Date().getTime();
    if ( data.lastView && now - data.lastView / 1000 > 15 ) {
      data.views = views.count++; // views который справа за пределами функции?
      data.lastView = now;
      }
    } else {
      data.views = 2;
      data.lastView = 1;
      }
      
    }
  }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы