Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

219
Visualizações
Refactoring ES6 classes - call main class methods from other classes

I'm currently working on a image slider and stuck on a problem with cleaning up and split my code into own classes. This is a simplistic and minimal version of it, so constructors and other methods were left out.

// Main class in slimSlider.js

import SliderUI from './slimSlider.ui';

class Slider {

  #addUI() {
        this.sliderUI = new SliderUI(this.opts,this.#sliderContainer,this.sliderWrapper,this.sliderElements);
  }

  #addUIEventsArrow() {
        this.sliderUI.arrowContainer.sliderButtonLeft.addEventListener('click', () => this.showPrevSlides());
        this.sliderUI.arrowContainer.sliderButtonRight.addEventListener('click', () => this.showNextSlides());
  }

  showNextSlides() {
        this.#slideTransition(false, 'right');
  }

  showPrevSlides() {
        this.#slideTransition(false, 'left');
  }

}

I want to transfer all methods that control the event listeners like #addUIEventsArrow from Slider to SliderUi class. But how can i call main class methods like this.showPrevSlides() and this.showNextSlides() from SliderUi without having the class instance and not inherit to it?

// UI class in slimslider.ui.js

export default class SliderUI {

    #addUIArrows() {
        this.arrowContainer = {}
        this.arrowContainer.wrapper = document.createElement('div');
        SliderHelpers.setElClass(this.arrowContainer.wrapper,this.#controlCssClasses.container.arrowContainer.name);
        this.arrowContainer.sliderButtonLeft = this.#addUIArrowsSingle('left');
        this.arrowContainer.sliderButtonRight = this.#addUIArrowsSingle('right');
        this.controlContainer.appendChild(this.arrowContainer.wrapper);
    }

    // final result should be something like this
    #addUIEventsArrow() {
        this.arrowContainer.sliderButtonLeft.addEventListener('click', () => this.showPrevSlides());
        this.arrowContainer.sliderButtonRight.addEventListener('click', () => this.showNextSlides());
    }

}

Would be nice if somebody can help. Thank you

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda