Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

222
Vistas
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 la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda