In the prototype system, there are no classes. JS has no classes either in the true sense and the ES6 classes you use are just syntactic sugar over the prototypes. What that means is behind the scene JS writes a prototype-based code that makes your class-based code work.
Class-based languages are based on a deep-rooted duality of Classes & Object Instances. For instance, if we create an object of the class Vehicle, such as Red Car, and ask it to deliver a super heavy material, it will not be feasible because Red Car is not equipped for that and it is something that's wired in Vehicle class. This highlights the importance of subclassing, which enables creating specialized classes, such as Sports Cars and Trucks, with their unique capabilities.
However, predicting the future qualities of objects and classes is challenging, and systems can become rigid when the initial design does not anticipate future changes. And this was one of the motivations to create prototype features, as such use cases occur in real-world development all the time.
Object.create() method and the