One of the ways is mixins. This is essentially coping properties and methods from one object to another. It can be achieved by using ES6 Object.assign() which copies one or more objects and returns a new object. Lodash _.extend() achieves the same thing if you need older browser support.
Below is an example of creating a mixin:
The next tactic is to use functional inheritance similar to mixins but you can use closures to enforce private data. We can then utilise privilege methods to manipulate the private data fields. Refactoring the example above to use functional inheritance:
Composition creates a different relationship
Classical inheritance typically creates an is-a relationship but in a lot of ways we prefer more has-a or uses-a, which is achieved using composition.
const car = compose(accelerator, brake, steeringWheel);
I think this offers more of an expressive, flexible and simpler way of building classes.