To implement prototype-based inheritance in JavaScript, you essentially link one object to another so that the second object can delegate property lookups to the first.
Object.create() is the most direct way to implement prototypal inheritance. It creates a new object and allows you to specify exactly which object should be its prototype.
You can create a prototype-based inheritance by defining methods and properties on a prototype object and then using a constructor function to create instances that inherit from that prototype. This allows you to define shared behaviour that is available to all instances of the object.
Classes make the prototype-based implementation much easier to read. Even though it looks like 'Class-based' code, JavaScript is still just setting up a prototype chain behind the scenes.