If I use a class-based system, I know what shape an object will be at the time I construct it, and I know exactly which fields and methods it has. They can be put in fixed locations that remain stable, and the object has a single identity its whole lifetime.
In a prototype-based model, an already-constructed object can be used as the parent (prototype) of another object, which inherits from it. Because of this, the object being used as a prototype can become part of a new object, with a new identity and new shape, during its lifetime. It can also be inherited from multiple times by different children.
Understandably, the typical approaches to representing class instances where all these things are fixed at construction time don't work as well here, so what should I do instead? Do I have to use string lookup and/or just chain manually from the deepest descendant, or is there a better representation or implementation strategy? Will these implementation details "leak through" to become visible to the programmer?
Here I'm envisaging a language where objects can be created directly with something like an object literal, and you can use an object you made that way as a prototype for others (as well as objects themselves made from prototypes). I'm open to typed or untyped approaches or varied semantic models for how that's all accomplished if needed — that's what might be leaking through from the required implementation.