Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

218
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!